游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2546|回复: 6

初学者的问题:窗口内容显示不出来

[复制链接]

2

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2008-3-5 10:59:00 | 显示全部楼层 |阅读模式
看以下代码:

编译通过了,窗口也出来了,但就是看不到颜色,窗口中的画面是桌面背景的画面,不知为什么?

[em4] [em4] [em4] [em4] [em4]

#include <gl\glut.h>

//#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")

void renderScene(void);

void main(int argc,char **argv)
{
        glutInit(&argc,argv);
        glutInitWindowPosition(0,0);
        glutInitWindowSize(200,200);
        glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE|GLUT_DEPTH);
        glutCreateWindow("a opengl window!");
        glutDisplayFunc(renderScene);
        glutMainLoop();
}

void renderScene(void) {
        glClearColor(0.0f, 0.0f, 0.5f, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
        glBegin(GL_TRIANGLES);
        glVertex3f(-0.5,-0.5,0.0);
        glVertex3f(0.5,0.0,0.0);
        glVertex3f(0.0,0.5,0.0);
        glEnd();
        glFlush();
}

[em4]
希望大家能不吝赐教!

10

主题

173

帖子

178

积分

注册会员

Rank: 2

积分
178
发表于 2008-3-5 12:45:00 | 显示全部楼层

Re: 初学者的问题:窗口内容显示不出来

因为不了解glutMainLoop机制 原回答错误。编辑掉。

glViewport是不是少了。

4

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
发表于 2008-3-5 17:20:00 | 显示全部楼层

Re:初学者的问题:窗口内容显示不出来

可能是显卡驱动没装好,不支持双缓冲.

你把glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE|GLUT_DEPTH);里的GLUT_DOUBLE改为GLUT_SINGLE试试.

0

主题

61

帖子

61

积分

注册会员

Rank: 2

积分
61
发表于 2008-3-15 14:29:00 | 显示全部楼层

Re:初学者的问题:窗口内容显示不出来

ChangeSize呢?

都被吃掉了?

抄代码也抄全了啊。

没定义Viewport是最关键的错误。

0

主题

61

帖子

61

积分

注册会员

Rank: 2

积分
61
发表于 2008-3-15 14:31:00 | 显示全部楼层

Re:初学者的问题:窗口内容显示不出来

还有,现在怎么什么都喜欢往显卡驱动上扯?

你家显卡还不支持双缓冲呢3楼?

4

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
发表于 2008-3-15 21:14:00 | 显示全部楼层

Re:初学者的问题:窗口内容显示不出来

首先对楼主道歉,因为对OGL和glut不了解,所以解释错了.

问题的关键是如果要使用双缓冲,就要在适当的时候交换两缓冲的内容.所以只要将glFlush();改成glutSwapBuffers();交换缓冲区就可以了.多谢楼上各位的批评.

2

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
QQ
发表于 2008-3-28 14:22:00 | 显示全部楼层

Re: 初学者的问题:窗口内容显示不出来


glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE|GLUT_DEPTH);里面的GLUT_DOUBLE换成GLUT_SINGLE;
或则
把glFlush();换成glutSwapBuffers();
最好再加个函数把颜色缓冲区给清除一下。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-20 14:17

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表