|
|

楼主 |
发表于 2006-12-26 09:57:00
|
显示全部楼层
Re:为什么叫swapbuffers而不叫present
如果真的只是交换指针。BACK变FRONT,FRONT变BACK。
glDisable(GL_DEPTH_TEST);
glDisable(GL_CULL_FACE);
glDisable(GL_LIGHTING);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFinish();
glClearColor(0.0f, 0.0f, 0.0f, 0.0);
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1,1,1 );//在当前的BACK BUFFER里面画个白色矩形
glBegin(GL_QUADS);
glVertex2f(0,0);
glVertex2f(0,1);
glVertex2f(1,1);
glVertex2f(1,0);
glEnd();
SwapBuffers(wglGetCurrentDC());//交换BACK和FRONT.按照道路现在的BACK不知道是什么颜色的
Sleep(100);
glClearColor(1.0f, 0.0f, 0.0f, 0.0);//clear了
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(0.0,0.9,0.0);//画个绿色的矩形
glBegin(GL_QUADS);
glVertex2f(0,0);
glVertex2f(0,-1);
glVertex2f(-1,-1);
glVertex2f(-1,0);
glEnd();
SwapBuffers(wglGetCurrentDC());//再交换。那么现在的BACK里面应该是有个白色的矩形。但是没有绿色的,FRONT里面应该就是屏幕上看到的
Sleep(100);
while(1)
{
glColor3f(0,0,1.0 );//画个蓝色的矩形
glBegin(GL_QUADS);
glVertex2f(0,0);
glVertex2f(-1,0);
glVertex2f(-1,1);
glVertex2f(0,1);
glEnd();
SwapBuffers(wglGetCurrentDC());//现在应该看到的是2个矩形交替出现
Sleep(2000);
}
但是实际上面的结果不是这样的。感觉就根本没有交换。第一个SWAP,看到的是白色黑底,2个是绿色红底。最终结果是蓝色+绿色,红底
|
|