天天看點

glColor3f的次序對渲染的影響

原始代碼如下:

#include <gl/glut.h>

#include <Windows.h>

#define WIDTH 400

#define HEIGHT 400

#include <math.h>

#define ColoredVertex(c, v) do{ glColor3fv(c); glVertex3fv(v); }while(0)

GLfloat angle = 0.0f;

void myDisplay(void)

{

  glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

  glClear(GL_COLOR_BUFFER_BIT );

  glPointSize(20);

  glBegin(GL_POINTS);

//////////

  glVertex3f(0, 0, 0); 

  glColor3f(0.0f, 0.0f, 0.0f);

  glEnd();

  glFlush();

}

void myIdle(void)

     myDisplay();

     ::Sleep(10000);

int main(int argc, char* argv[])

     glutInit(&argc, argv);

     glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);

     //glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);

     glutInitWindowPosition(200, 200);

     glutInitWindowSize(WIDTH, HEIGHT);

     glutCreateWindow("OpenGL 視窗1");

     glutDisplayFunc(&myDisplay);

     glutIdleFunc(&myIdle);

     glutMainLoop();

     return 0;

在上面的代碼中,會出現一個白色的矩形,然後到逾時10秒之後消失了,但是設定的顔色都是黑色,按照道理應該隻是黑色。如果調整

的次序,就不會出現上面的情況,因為渲染的矩形都是黑色的,是以什麼也沒有除了黑色的。

    本文轉自fengyuzaitu 51CTO部落格,原文連結:http://blog.51cto.com/fengyuzaitu/1879638,如需轉載請自行聯系原作者

繼續閱讀