opengl图形代码写完了,也编译成功了,为什么不显示图形?
5个回答
展开全部
画到屏幕外了吧,试试在绘制前用 glTranslatef(0.0,0.0,-1.0f); 将场景往屏幕里一动一个单位
更多追问追答
追问
这个问题解决了,又出现了新问题,能不能帮帮我。。我是在文本类Doc.cpp里画的图像,然后再view.cpp里面写的控制它转动的代码。我现在想这些东西全部都在view.cpp里面完成,,请问能不能给点建议,我是初学者,c++ mfc 都没怎么学过,上来就搞mfc中的opengl,很多疑点。。而且在文本类里的gltranslatef()移动的话都是正常的单位。。。可是在视图类里面的gltranslatef()移动的单位毫无规律啊感觉。。
追答
好吧 首先你要知道opengl 通过 glTranslatef 生成了一个平移矩阵,执行这部之后所有的顶点坐标都会乘以这个矩阵,得到平移后的坐标。
那就是说glTranslatef会影响到它后面所有的绘制,要使它不影响都场景中其他无关的物体,就要保存变换前的矩阵,做完变换后,再还原矩阵。
code:
glPushMatrix(); // 将当前的变换矩阵入栈
glTranslatef(...); // 移动
glScalef(...); // 缩放
glRotatef(...); // 旋转
DrawSomething(); // 绘制需要受到影响的东西
glPopMatrix(); // 将当前矩阵设置为变换前的矩阵
DrawOthers(); // 绘制其他东西
主要逻辑顺序就是这样,理解理解吧。除非你两个类中改变了窗口大小,分辨率或者屏幕投影方式,否则执行 glTranslatef(...) 参数相同的话它的作用也相同的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可能是画出屏幕外了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是用glut的窗口画的吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询