MFC中opengl编程画图没有结果显示?
答案:3 悬赏:0 手机版
解决时间 2021-04-28 05:47
- 提问者网友:山高云阔
- 2021-04-27 22:36
MFC中opengl编程画图没有结果显示?
最佳答案
- 五星知识达人网友:低音帝王
- 2021-04-27 23:21
OnDraw()是由OnPaint()内部调用的,系统只有在收到WM_PAINT消息后才调用OnPaint()。你可以试一试手动用CWnd::UpdateWindow()发出WM_PAINT消息,看看有没有图案;
你还可以试一试不在OnCreate()里获取DC,而在OnInitialUpdate()里获取DC,可能窗口创建完成后还不能马上获得DC;
其实,如果你能看到黑色背景,就说明已经在绘图了。只是因为观察点/视截体设置不当,才看不到三角形
另外,glClearColor()只需要在初始化阶段调用一次即可
你还可以试一试不在OnCreate()里获取DC,而在OnInitialUpdate()里获取DC,可能窗口创建完成后还不能马上获得DC;
其实,如果你能看到黑色背景,就说明已经在绘图了。只是因为观察点/视截体设置不当,才看不到三角形
另外,glClearColor()只需要在初始化阶段调用一次即可
全部回答
- 1楼网友:忘川信使
- 2021-04-28 01:15
glLoadIdentity();后加一句glTranslate(0,0,-3);试试。追问还是不行,坐标的范围很奇怪,看网上的很多代码中的坐标范围都是从-1到1,但是我的好像不是,要把坐标中X,Y设的很大才能显示二维的图像,而Z坐标超过正负一就看不到图像了!真是搞不懂,默认的不都是正交投影吗,为什么这么奇怪呢?
- 2楼网友:一袍清酒付
- 2021-04-28 00:26
glMatrixMode(GL_PROJECTION);// 选择投影矩阵
glLoadIdentity();// 重置投影矩阵
// 设置视口的大小
gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);//width、height是窗口宽高
// 默认Z值范围太小了,自己调大点
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
然后把顶点Z值都设置为-5.0看看
glLoadIdentity();// 重置投影矩阵
// 设置视口的大小
gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);//width、height是窗口宽高
// 默认Z值范围太小了,自己调大点
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
然后把顶点Z值都设置为-5.0看看
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯