理論上是旋轉的盒子 (奇怪的名詞)
總之在這個範例中,我同時測試了 1)透明度 2)旋轉 3)描邊線
由於大部分與前面差不多,只有外型宣告與實際上畫圖的函式被修改,因此只列出修改部分。
- static GLfloat vertexTri[] =
- {
- // Front
- -50.0f, 50.0f, 50.0f, // 0
- 50.0f, 50.0f, 50.0f, // 1
- 50.0f, -50.0f, 50.0f, // 2
- -50.0f, -50.0f, 50.0f, // 3
- // Back
- -50.0f, 50.0f, -50.0f, // 4
- 50.0f, 50.0f, -50.0f, // 5
- 50.0f, -50.0f, -50.0f, // 6
- -50.0f, -50.0f, -50.0f // 7
- };
- static GLfloat vertexTri2[] =
- {
- // Front
- -40.0f, 40.0f, 40.0f, // 0
- 40.0f, 40.0f, 40.0f, // 1
- 40.0f, -40.0f, 40.0f, // 2
- -40.0f, -40.0f, 40.0f, // 3
- // Back
- -40.0f, 40.0f, -40.0f, // 4
- 40.0f, 40.0f, -40.0f, // 5
- 40.0f, -40.0f, -40.0f, // 6
- -40.0f, -40.0f, -40.0f // 7
- };
- static GLubyte indexsTri[] =
- {
- // Front
- 1, 2, 3,
- 0, 1, 3,
- // Back
- 7, 6, 4,
- 6, 5, 4,
- // Left
- 4, 0, 7,
- 0, 3, 7,
- // Right
- 1, 5, 2,
- 5, 6, 2,
- // Top
- 4, 5, 0,
- 5, 1, 0,
- // Down
- 3, 2, 7,
- 2, 6, 7
- };
- void GLAPP_DrawTest(
- GLboolean bLighting,
- GLboolean bBlend,
- GLboolean bDepthTest,
- GLenum eCullFace,
- GLenum eTexFilter )
- {
- static int angle_x=0;
- static int angle_y=0;
- int i;
- glPushMatrix();
- glRotatef( angle_x, 1.0, 0.0, 0.0 );
- angle_x+=2;
- if(angle_x>=360)
- angle_x = 0;
- glRotatef( angle_y, 0.0, 1.0, 0.0 );
- angle_y+=1;
- if(angle_y>=360)
- angle_y = 0;
- glEnable( GL_BLEND );
- // Pain litter cube (white&line)
- glVertexPointer( 3, GL_FLOAT, 0, vertexTri2 );
- glColor4f( 1.0f, 1.0f, 1.0f, 1.0f );
- for(i=0;i<6;i++)
- glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, indexsTri+6*i);
- glColor4f( 0.0f, 0.0f, 0.0f, 1.0f );
- for(i=0;i<6;i++)
- glDrawElements(GL_LINE_LOOP, 6, GL_UNSIGNED_BYTE, indexsTri+6*i);
- // Paint bitter cube
- glVertexPointer( 3, GL_FLOAT, 0, vertexTri );
- glDisableClientState( GL_COLOR_ARRAY );
- glColor4f( 1.0f, 1.0f, 1.0f, 0.5f );
- for(i=0;i<6;i++)
- {
- glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, indexsTri+6*i);
- }
- glPopMatrix();
- }
複製代碼
結果如下圖。
... |