- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的窗口,其背景颜色是在带有一些全局变量的主循环中设置的:
顶部的全局值:
static GLfloat redIntensity = 0.0; //values for background color
static GLfloat greenIntensity = 0.0;
static GLfloat blueIntensity = 0.0;
主要内容:
int main(int argc, char** argv){
...
glutDisplayFunc(display);
...
glutKeyboardFunc(keyboard); //****
glutMainLoop();
return 0;
}
实际根据全局值设置颜色的显示:
void display(void){
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glClearColor(redIntensity, greenIntensity, blueIntensity, 0.0);
...
... //other stuff here is polygon drawn in middle of screen
glPopMatrix();
glutSwapBuffers();
}
在键盘函数中,我有一个 switch 语句,它应该根据按下的键改变背景颜色,例如:
...
case 'm':
{
redIntensity = 0.5;
greenIntensity = 0.0;
blueIntensity = 0.5;
bgc = MAGENTA; //another global thing to keep track of current color for other reasons...
}
...
glutPostRedisplay();
不幸的是,在调用 glutPostRedisplay()
时,背景颜色不会立即改变……用户必须先点击其他地方或按另一个键。我在别处读到 glutPostRedisplay()
只会排队重新显示,所以我尝试在之后直接在该行中添加 glFlush()
。这仍然没有用,所以我尝试在那里直接调用 glutDisplayFunc(display)
。又一次,失败了。
如何在按键按下后强制改变颜色?也许主要或其他地方的订购电话导致了问题?嗯……
最佳答案
OpenGL 是一个状态机。当调用 glClear 时,它使用之前通过 glClearColor、glClearDepth、glClearStencil 设置的值。所以解决方案是将 glClearColor 调用放在显示中的 glClear 调用之前。
关于opengl - 当调用 glutPostRedisplay 时,如何强制我的 GL 应用程序中的背景颜色立即更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12665986/
我有一个分形对象,它是用变量的随机值创建的。我正在使用 C++ 和 OpenGL。但是现在,由于我打算使用 glutTimerFunc 为场景中的其他对象设置动画,我需要调用 glutPostRedi
我正在制作一个游戏,其中我的玩家是一个 Sprite ,它会随着我按下右键或向上键(跳跃和奔跑)而改变,因为我在 pressKeySpecial 和 releaseKeySpecial 中写了“Glu
我有一个用 OpenGL 显示彩色立方体的程序。我正在使用 freeglut 来显示 OpenGL 实例。该程序应该允许用户在按住鼠标左键的同时用鼠标旋转立方体。每次鼠标移动后,光标应该在窗口中居中,
我有一个标准的过剩实现。显示函数重绘每个对象,但我需要不断更新每个对象的某些值。实际上,我能想到的唯一方法是生成一个线程来处理更新。但是,我不能使用来自不同线程的 glutPostRedisplay(
我有一个程序更新它的程序输出然后程序的状态改变。这发生在时间的自动收报机(不是 openGL 计时器,一个在线程中实现的计时器)发生时,以及当键盘输入从 glut 注册时(使用 glutKeyboar
所以我试图在窗口内绘制一条之字形线,它从鼠标点击中获取 x 和 y 坐标。因此每次点击窗口后,最后两个顶点将连接在一起,依此类推。 #include #include void init(){
我不太明白 glutPostRedisplay() 是什么用来。好像当我在我的函数中调用它时,在下一帧 display()函数将被调用。但是我不知道该功能与动画有何关系。我们经常将用于物理计算的函数注
当我尝试运行此代码时,它只是在退出函数之后发布输出,我不知道为什么它不起作用。我知道代码很长,因为我在学习OpenGL的同时制作游戏,并且我试图使其尽可能跨平台。第80行在窗口关闭之前不会执行。有人可
所以我尝试从 IMU 读取传感器数据并相应地更新角度。我打开传感器数据文件,逐行读取,将四元数转换为旋转,然后更新我的模型。问题是,当从 while 循环调用 glutPostRedisplay()
在阅读红皮书时我发现: glutDisplayFunc(void (*func)(void)) is the first and most important event callback funct
我尝试在这个项目中实现usb和cpu之间的数据传输。数据传输显示为从计算机的一个组件移动到另一个组件的小矩形。 在下面的代码中,GlutPostRedisplay 不起作用。 另外,有人可以告诉我使用
我刚开始使用 opengl。事实上,这是我的第一个项目。我想将一些纹理映射到背景中的四边形,并想在前面使用 gluSphere 绘制一个球体,我想为此设置动画。所以,我先映射纹理,然后在显示函数中绘制
我有一个简单的窗口,其背景颜色是在带有一些全局变量的主循环中设置的: 顶部的全局值: static GLfloat redIntensity = 0.0; //values for backgroun
我有一个简单的窗口,其背景颜色是在带有一些全局变量的主循环中设置的: 顶部的全局值: static GLfloat redIntensity = 0.0; //values for backgroun
我在屏幕上绘制了一个球体。当我按下按钮时,我希望球体慢慢向右移动。我正在尝试用 for (int i = 0;i<10;i++) { sphere.moveToRight(0.1); glutPost
我是一名优秀的程序员,十分优秀!