- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一些看起来像这样的代码:
GLfloat c[4];
glGetFloatv(GL_CURRENT_COLOR, c);
我希望在调用 glGetFloatv
之后将当前 RGBA 颜色写入数组 c
。然而,数组中的值根本没有改变(即它在调用 glGetFloatv
之前和之后包含相同的垃圾值)。
显然,我要么误解了 GL_CURRENT_COLOR
的含义(获取之前通过调用 glColor4f
设置的颜色),要么做错了什么......
附言:此外,此过程可能会在对 glColor4f
的任何调用发生之前被调用,但在那种情况下,我认为它应该返回 (1.0, 1.0, 1.0, 1.0)
,对吗?
编辑:在尝试获取颜色后调用 glGetError
返回 0
。
最佳答案
在这里工作得很好:
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
GLfloat color[4];
glGetFloatv(GL_CURRENT_COLOR, color);
cout << "Default color: ";
for( size_t i = 0; i < 4; i++ )
cout << color[i] << " ";
cout << endl;
glColor3ub( 255,0,0 );
glGetFloatv(GL_CURRENT_COLOR, color);
cout << "Should be red: ";
for( size_t i = 0; i < 4; i++ )
cout << color[i] << " ";
cout << endl;
glutSwapBuffers();
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
glutInitWindowSize(200,200);
glutCreateWindow("Color");
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
输出:
Default color: 1 1 1 1
Should be red: 1 0 0 1
P.S.: Also, this procedure might be called before any calls to glColor4f happen, but in that case I assume it should return (1.0, 1.0, 1.0, 1.0), right?
关于c - 带有 GL_CURRENT_COLOR 的 glGetFloatv 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12867641/
这会在使用 GCC 编译时导致堆栈崩溃。 void MyOpenGLLineClass::set_width (float x) { float max = 1; glGetFloat
我有一些看起来像这样的代码: GLfloat c[4]; glGetFloatv(GL_CURRENT_COLOR, c); 我希望在调用 glGetFloatv 之后将当前 RGBA 颜色写入数组
我正在使用 pyglet 在 python 中进行 3d 可视化,并且需要检索模型 View 和投影矩阵以进行一些选择。我使用以下方法定义我的窗口: from pyglet.gl import * f
我正在尝试在“x”轴上旋转并保存转换后的矩阵,以便稍后可以使用它进一步旋转;或从已经旋转的角度看另一个轴。 //rotate glRotatef(yROT,model[0],model
我似乎在使用 glGetFloatv 获取模型 View 矩阵时遇到了一些意想不到的麻烦(这也发生在尝试获取投影矩阵时)。 会发生什么?好吧,不管矩阵实际是什么,函数都会返回单位矩阵,甚至在平移和旋转
我是一名优秀的程序员,十分优秀!