opengl实现图形移动时如何消除闪烁 10
主要代码如下,绘制图形的代码不放出来了,长度受限。我的问题是,按键后调用回调函数刷新显示,总有闪烁的视觉,上课看老师演示的时候,不会闪烁,求实现方法。#include<W...
主要代码如下,绘制图形的代码不放出来了,长度受限。我的问题是,按键后调用回调函数刷新显示,总有闪烁的视觉,上课看老师演示的时候,不会闪烁,求实现方法。
#include <Windows.h>
#include <GL.h>
#include <GLU.h>
#include<GLUT.h>
GLfloat xRot = 0;
GLfloat yRot = 0;
void triangle( GLfloat *a, GLfloat *b, GLfloat *c)
{
glVertex2fv(a);
glVertex2fv(b);
glVertex2fv(c);
}
void myTest()
{
// 把背景色设置为白色
glClearColor(0.5f,0.5f,0.5f,1.0f);
glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glFlush();
glPushMatrix();
glRotatef(xRot,1.0f, 0.0f, 0.0f);
glRotatef(yRot,0.0f, 1.0f, 0.0f);
/*
glBegin..glEnd这段代码中,仅允许执行部分命令: glVertex,glColor,glSecondaryColor,
glIndex,glNormal, glFogCoord,等等
*/
glBegin(GL_TRIANGLES);
glColor3f(1,1,1);
makeSnow(u[0],u[1],u[2],7,UP);
//divide_tetra(t[0],t[1],t[2],t[3],3);
//divide_triangle(v[0],v[1],v[2],3);
glEnd();
glPopMatrix();
glFlush();
}
void SpecialKeys(unsigned char key, int x, int y)
{
if(key == 'w')
xRot-= 5.0f;
if(key == 's')
xRot += 5.0f;
if(key == 'a')
yRot -= 5.0f;
if(key == 'd')
yRot += 5.0f;
if(key > 356.0f)
xRot = 0.0f;
if(key < -1.0f)
xRot = 355.0f;
if(key > 356.0f)
yRot = 0.0f;
if(key < -1.0f)
yRot = 355.0f;
// Refresh the Window
glutPostRedisplay();
}
int main( int argc,char * argv[] )
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE|GLUT_DEPTH);
glutInitWindowPosition(200,200);
glutCreateWindow("My OpenGL");
glutDisplayFunc(&myTest);
glutKeyboardFunc(SpecialKeys);
glutMainLoop();
return 0 ;
}
通过按键移动图形时,出现下面的颜色问题,是怎么回事?如何处理? 展开
#include <Windows.h>
#include <GL.h>
#include <GLU.h>
#include<GLUT.h>
GLfloat xRot = 0;
GLfloat yRot = 0;
void triangle( GLfloat *a, GLfloat *b, GLfloat *c)
{
glVertex2fv(a);
glVertex2fv(b);
glVertex2fv(c);
}
void myTest()
{
// 把背景色设置为白色
glClearColor(0.5f,0.5f,0.5f,1.0f);
glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glFlush();
glPushMatrix();
glRotatef(xRot,1.0f, 0.0f, 0.0f);
glRotatef(yRot,0.0f, 1.0f, 0.0f);
/*
glBegin..glEnd这段代码中,仅允许执行部分命令: glVertex,glColor,glSecondaryColor,
glIndex,glNormal, glFogCoord,等等
*/
glBegin(GL_TRIANGLES);
glColor3f(1,1,1);
makeSnow(u[0],u[1],u[2],7,UP);
//divide_tetra(t[0],t[1],t[2],t[3],3);
//divide_triangle(v[0],v[1],v[2],3);
glEnd();
glPopMatrix();
glFlush();
}
void SpecialKeys(unsigned char key, int x, int y)
{
if(key == 'w')
xRot-= 5.0f;
if(key == 's')
xRot += 5.0f;
if(key == 'a')
yRot -= 5.0f;
if(key == 'd')
yRot += 5.0f;
if(key > 356.0f)
xRot = 0.0f;
if(key < -1.0f)
xRot = 355.0f;
if(key > 356.0f)
yRot = 0.0f;
if(key < -1.0f)
yRot = 355.0f;
// Refresh the Window
glutPostRedisplay();
}
int main( int argc,char * argv[] )
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE|GLUT_DEPTH);
glutInitWindowPosition(200,200);
glutCreateWindow("My OpenGL");
glutDisplayFunc(&myTest);
glutKeyboardFunc(SpecialKeys);
glutMainLoop();
return 0 ;
}
通过按键移动图形时,出现下面的颜色问题,是怎么回事?如何处理? 展开
天正软件
2024-08-02 广告
2024-08-02 广告
上海天正软件有限公司是上海天正信息科技有限公司投资的专注于提供金融行业软件开发及解决方案的公司,上海天正通过与金融企业长期的合作,能够了解金融业务的需要,提供各种客户化的开发及顾问服务,为金融企业裁剪出一套适合自身业务需要的解决方案。...
点击进入详情页
本回答由天正软件提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询