首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

Opengl程序不正常!太邪门了!求帮忙啊该怎么处理

2013-01-05 
Opengl程序不正常!太邪门了!求帮忙啊!本帖最后由 blackeagleX 于 2012-08-23 20:38:01 编辑#includestdio

Opengl程序不正常!太邪门了!求帮忙啊!
本帖最后由 blackeagleX 于 2012-08-23 20:38:01 编辑


#include<stdio.h>

#include<gl\glut.h>


void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3b(255,255,0);     //无论怎么改变数值,多边形都是黑色的
glBegin(GL_POLYGON);
glVertex3f(0.25,0.25,0.0);
glVertex3f(0.75,0.25,0.0);
glVertex3f(0.75,0.75,0.0);
glVertex3f(0.6,0.80,0.0);
glVertex3f(0.25,0.75,0.0);
glEnd();
glFlush();
}

void initlize()
{
glClearColor(1.0,1.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0,1.0,0.0,1.0,-1.0,1.0);
//glMatrixMode(GL_MODELVIEW);
}

void display2()
{

}


int main(int argc,char** argv)
{

glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(250,250);
glutInitWindowPosition(100,100);
glutCreateWindow("hello my gl!");
initlize();
glutDisplayFunc(display);
glutMainLoop();

return 0;
}



操作系统是Win7 64位, 编译环境VS2010

可以调节背景颜色,但是,无法给绘制的多边形着色。这是为什么呢?
1.首先,排除OpenGl不被显卡支持的可能,因为vtk是基于Opengl封装的,而我的电脑上能够完全正常运行基于vtk的程序。
[解决办法]
我以前用过opengl,但看不出你的问题在哪儿。我刚学opengl时调试都很顺利,不用灯光和材质,画直线颜色都正常。建议你再画点别的试试,三角形,球体等,一般加入灯光,材质后,颜色肯定会出来。
[解决办法]
改成 glColor3b(127,0,0); 试试吧
GLbyte 定义成 signed char, 不是 unsigned char 的, 255 超出范围了.

[解决办法]
OpenGL内部都是用浮点型来表示颜色的,这样glColor3f(0.2, 0.8, 0.1)设置就可以了,可能是驱动的问题,不过颜色最好直接用浮点型的。
[解决办法]
多边形是有正面反面的。纯属瞎猜啊。
[解决办法]
那些软件应该都是用glColor3f,就算你用整型,最终内部也是需要转成浮点的。


引用:
引用:

OpenGL内部都是用浮点型来表示颜色的,这样glColor3f(0.2, 0.8, 0.1)设置就可以了,可能是驱动的问题,不过颜色最好直接用浮点型的。


你说是驱动的问题,那为什么那些其他基于OpenGl的软件如vtk和3dslider都能在我的机子上正常运行呢?

[解决办法]
nene 教程都是这么开头的:


glClear(GL_COLOR_BUFFER_BIT 
[解决办法]
 GL_DEPTH_BUFFER_BIT);// 清除屏幕及深度缓存
glLoadIdentity();// 重置模型观察矩阵
glTranslatef(-1.5f,0.0f,-6.0f);// 左移 1.5 单位,并移入屏幕 6.0

glBegin(GL_TRIANGLES);// 绘制三角形
glColor3f(1.0f,0.0f,0.0f);// 设置当前色为红色
glVertex3f( 0.0f, 1.0f, 0.0f);// 上顶点



纯属围观....
[解决办法]
我想你glColor3f是不是应该放在glBegin里面啊...
[解决办法]
//清除屏幕和深度缓存   
    glClear(GL_COLOR_BUFFER_BIT
[解决办法]
GL_DEPTH_BUFFER_BIT);  
    //重置模型视图矩阵   
    glLoadIdentity();  
        glTranslatef(0.0f,0.0f,-5.0f);//移入屏幕5个单位   



http://blog.csdn.net/whucv/article/category/1189033

推荐看Nehe Openg中文教程,世界经典
http://www.owlei.com/DancingWind

热点排行