VC++ .NET 2003 下OpenGL编程问题——这段代码不好用!?

vcbros 2006-06-11 11:08:28
各位朋友,大家好!

我在一本介绍VC++ .NET编程的书上看到介绍OpenGL的编程内容,其中给出了一段代码,关于坐标变换,代码如下:

#include "stdafx.h"
#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glaux.h>

#using <mscorlib.dll>

using namespace System;

void CALLBACK display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
glLoadIdentity(); // 将当前矩阵赋值为单位矩阵
glTranslatef(0.0, 0.0, -0.5); // 实体的平移变换
glScalef(1.0, 2.0, 1.0); // 缩放变换
auxWireCube(1.0); // 用OpenGL辅助库绘制立方体
glFlush(); // 结束绘图命令
}

void myinit(void)
{
glShadeModel(GL_FLAT); // 设置阴影模式
}

void CALLBACK myReshape(GLsizei w, GLsizei h)
{
glMatrixMode(GL_PROJECTION); // 把后面的矩阵操作施加于视图
glLoadIdentity();
glFrustum(-1.0, 1.0, -1.0, 1.0, 1.5, 20.0); // 定义视图体
glMatrixMode(GL_MODELVIEW); // 把后面的矩阵操作施加于造型视图矩阵
glViewport(0, 0, w, h); // 定义视口;
}

/* int _tmain() // 我把Console程序向导生成的默认主函数注释掉了。
{
// TODO: 请用您自己的代码替换下面的示例代码。
Console::WriteLine(S"Hello World");
return 0;
}*/

void main(int argc, char **argv)
{
auxInitDisplayMode(AUX_SINGLE | AUX_RGBA);
auxInitPosition(0, 0, 500, 500);
auxInitWindow(argv[0]);
myinit();
auxReshapeFunc(myReshape);
auxMainLoop(display);
}

我用的是Visual Studio 2003里的VC++建立一个控制台应用程序来测试这些代码,编译没有问题,但是程序运行结果就是一个黑色的窗体,而书中的程序截图是在一个黑色窗体中画了一个白色线条的立方体。请问为什么我执行这段代码就不好用?我应该怎么做?请指教,谢谢!
...全文
400 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
我是潘东东 2006-07-12
  • 打赏
  • 举报
回复
哎 晚来一步
vcbros 2006-06-16
  • 打赏
  • 举报
回复
各位朋友,大家好!

谢谢大家的帮助。现在问题已经解决了。是因为glTranslate()的参数不正确。如果把参数改为glTranslate(0, 0, -5);,程序就正确了。

非常感谢!
rocandroc 2006-06-14
  • 打赏
  • 举报
回复
display这个函数根本就没有被调用。
aux这个东西我不清楚,不过类似于gult的应该用auxDisplayFunc(display);吧。
vcbros 2006-06-12
  • 打赏
  • 举报
回复
请给予我这个问题的帮助,非常感谢!
soft_3d 2006-06-12
  • 打赏
  • 举报
回复
高级3D工程师,应聘请发简历至datehr@163.com

1, 在MS Visual Studio C++, MFC有2年以上工作经验
2, 具有使用VSS 或其他代码管理器2年以上
3, 精通OpenGL, D3D的编程
4, 精通图像、图形方面的基本算法及编程
5, 精通面向对象设计
6, 掌握Socket, TCPIP
7, 掌握数据库及SQL语言
8, 热爱3D技术。能刻苦努力地迎接挑战。

4,446

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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