gpt4 book ai didi

c - 带有 GL_CURRENT_COLOR 的 glGetFloatv 不起作用

转载 作者:太空狗 更新时间:2023-10-29 15:41:08 25 4
gpt4 key购买 nike

我有一些看起来像这样的代码:

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?

"The initial value for the current color is (1, 1, 1, 1)."

关于c - 带有 GL_CURRENT_COLOR 的 glGetFloatv 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12867641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com