我有一些看起来像这样的代码:
GLfloat c[4];
glGetFloatv(GL_CURRENT_COLOR, c);
我希望在调用c
后将当前的RGBA颜色写入数组glGetFloatv
。但是,数组中的值根本不会改变(即它在调用glGetFloatv
之前和之后都包含相同的垃圾值)。
显然,我要么误解GL_CURRENT_COLOR
的含义(获取之前通过调用glColor4f
设置的颜色)或做错了什么......
P.S .:
此外,在调用glColor4f
之前可能会调用此过程,但在这种情况下,我认为它应该返回(1.0, 1.0, 1.0, 1.0)
,对吗?
修改:尝试获取颜色后调用glGetError
0
。
答案 0 :(得分: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。:另外,在调用glColor4f之前可能会调用此过程,但是在这种情况下我假设它应该返回(1.0,1.0,1.0,1.0),对吗?