最終更新: mikk_ni3_92 2010年01月24日(日) 13:35:23履歴
現在地 >> メニュー >> 基本編09 >> 頂点配列 >> glDrawArraysによる描画 >> 頂点配列::glDrawArrays_3
#include <GL/glut.h> //---------- 頂点の配列データ ------------------// float points[] ={ 0,0,0,1,0,0,//(x,y,z,r,g,b) 1,0,0,0,1,0, 1,1,0,0,0,1, 0,1,0,1,1,0 }; //------------ プロトタイプ宣言 --------------// void display(); void reshape(int w, int h); void DRAW(); //------------- OpenGLの初期設定 ------------------// void GLUT_INIT() { glutInitDisplayMode(GLUT_RGBA| GLUT_DOUBLE | GLUT_DEPTH); glutInitWindowSize(640,480); glutCreateWindow("vertex array with stride"); } void GLUT_CALL_FUNC() { glutDisplayFunc(display); glutReshapeFunc(reshape); } void MY_INIT() { glClearColor(1.0, 1.0, 1.0, 1.0); } //-------------- メイン関数 ----------------// int main(int argc, char **argv) { glutInit(&argc,argv); GLUT_INIT(); GLUT_CALL_FUNC(); MY_INIT(); glutMainLoop(); return 0; } //--------------- ここからコールバック ------------------// void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); DRAW();//描画 glutSwapBuffers(); //ウィンドウに出力 } void reshape(int w, int h) { glViewport(0, 0, w, h); //ビューポートの設定 glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(30.0, (double)w / (double)h, 1.0, 100.0); //視野の設定 glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(3.0, 4.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); //視点の設定 } //------------ ここから各種関数 ------------------// void DRAW() { glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_COLOR_ARRAY); glVertexPointer(3, GL_FLOAT, sizeof(float)*6, points); //1頂点は3つで構成、float型、ストライド6、データ元 glColorPointer(3, GL_FLOAT, sizeof(float)*6, points+3); //1頂点は3色で構成、float型、ストライド6、データ元+3 glDrawArrays(GL_QUADS,0,4); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); glColor3f(1,1,1); }