opengl透射投影出错

ronal7do 2014-11-13 05:45:52

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#define GLUT_DISABLE_ATEXIT_HACK
#include <GL/glut.h>
#include "DrawString.h"
void init()
{
glClearColor(0.0f,1.0f,1.0f,0.0f);
glColor3f(1.0f,1.0f,0.0f);
glPointSize(10.0);
glLineWidth(2.0);
}
void dddisplay()
{
glClear(GL_COLOR_BUFFER_BIT);
glRectf(0.0,0.0,200.0,200.0);
glFlush();
}

void ChangeSize(GLsizei w,GLsizei h)
{
if(h == 0)
h = 1;
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//glOrtho(-300.0f,300.0f,-300.0f,300.0f,100.0f,-100.0f);
gluPerspective(45.0,(GLfloat)w/(GLfloat)h,1.0,425.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
int main()
{
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(0,0);//屏幕左上角为原点(0,0)
glutInitWindowSize(600,600);
glutCreateWindow("test");
glutDisplayFunc(dddisplay);
glutReshapeFunc(ChangeSize);
init();
glutMainLoop();
return 0;
}

在ChangeSize函数中,如果设置成正射投影glOrtho就正常显示图像,如果设置成透射投影gluPerspective就出错,有些没出错,但图像又跟我想的不一样,可能我对透射投影还不是很理解。请懂的人帮忙解答一下,感激!
...全文
289 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ronal7do 2014-12-01
  • 打赏
  • 举报
回复
自顶一下!!!!
赵4老师 2014-12-01
  • 打赏
  • 举报
回复
引用 3 楼 llq108 的回复:
可我还是不知道错误在哪。。求高手帮忙!
先研究一下为什么网络教程“学OpenGL编3D游戏”里面的透视投影是对的,再试试把它改为不对。
fly_dragon_fly 2014-12-01
  • 打赏
  • 举报
回复
什么地方不对?是指在投影下正方形显示不完整还是什么,上面代码没有纹理的操作, 不知道显示什么图像
ronal7do 2014-11-17
  • 打赏
  • 举报
回复
可我还是不知道错误在哪。。求高手帮忙!
赵4老师 2014-11-14
  • 打赏
  • 举报
回复
搜网络教程“学OpenGL编3D游戏”。
ronal7do 2014-11-14
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
搜网络教程“学OpenGL编3D游戏”。
好的,又有好资料学习了!

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧