C++ OpenGL:始终使用相同的颜色
我正在使用C++ OpenGL:始终使用相同的颜色,c++,opengl,colors,sdl,C++,Opengl,Colors,Sdl,我正在使用c++、opengl2.1和SDL在windows上编写一个程序,并且顶点颜色有一些问题 我正在使用glColor3f为每个顶点集设置颜色,但它似乎不起作用。无论我选择什么颜色,我都会把每个顶点画成红色。我检查了传递给glColor3f的值,它们实际上不是1.f、0.f、0.f 有没有人遇到过这样的问题,或者知道是什么原因造成的?我是不是不包括一些我应该做的事?或者您是否认为SDL初始化代码可能有问题(不应该有问题,因为我以前正确使用过它) 编辑4:解决了。。这确实是一个gpu的问题,
c++
、opengl2.1
和SDL
在windows上编写一个程序,并且顶点颜色有一些问题
我正在使用glColor3f
为每个顶点集设置颜色,但它似乎不起作用。无论我选择什么颜色,我都会把每个顶点画成红色。我检查了传递给glColor3f
的值,它们实际上不是1.f、0.f、0.f
有没有人遇到过这样的问题,或者知道是什么原因造成的?我是不是不包括一些我应该做的事?或者您是否认为SDL初始化代码可能有问题(不应该有问题,因为我以前正确使用过它)
编辑4:解决了。。这确实是一个gpu的问题,我从制造商那里得到了驱动程序,它现在工作正常。。。算计
编辑:我也不使用任何照明、纹理或任何种类的东西。从图形上说,我只是设置了窗口,告诉opengl一些顶点和颜色来绘制
EDIT2:当然,但我很怀疑有什么问题:
int GLmain::redraw(GLvoid)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_LINE_STRIP);
for(int i=0; i<s->divs.size(); i++){
vec3 v = s->divs.at(i).getPosition();
vec3 c = s->divs.at(i).getColor();
glColor3f(c.get(0),c.get(1),c.get(2));
glVertex3f(v.get(0),v.get(1),v.get(2));
}
glEnd();
return TRUE;
}
有两个可能的原因:
c.get(1)
不返回0吗?)printf(“c=(%f,%f,%f)”,(float)c.get(0),(float)c.get(1),(float)c.get(2))代码>您能试试这个吗:
glShadeModel( GL_SMOOTH );
告诉我问题是否解决了
将调用放在Init\u OpenGL
函数中。不确定这是否适用于您,但我只需要调用一次glUseProgram(NULL)代码>,告诉opengl使用固定的函数管道,问题得到了解决。能否显示渲染循环的一些示例代码?如果将其设置为(1,1,1,1),使用glClearColor更改的清晰颜色是否也显示为红色?否。。事实上,改变清晰的颜色根本没有效果。。总是黑色背景不。。我确实检查了这些值,它们确实是随机的。。还包括glMatrixMode(GL_投影);glLoadIdentity();格洛托(-100.0,100.0,-1.0,500.0,-20.0,20.0);glMatrixMode(GLU模型视图);glLoadIdentity();glEnable(GLU深度试验);glDepthFunc(GL_LESS);glShadeModel(GL_平滑);这些是我所做的唯一其他opengl调用(+sdl调用),它可能与渲染上下文有关(特别是当您写道“我刚刚尝试运行了一些我用opengl完成的其他工作,并且所有内容都显示为红色”)。我没有太多使用SDL,但请发布您的(渲染上下文)设置代码!我已经有了,我在评论中提到了。老实说,我不认为这是一个代码问题。。一年前编译的同一个可执行文件给了我正确的颜色,而现在它全是红色的
glShadeModel( GL_SMOOTH );