VC++ .NET 2003 下OpenGL编程问题——这段代码不好用!?
各位朋友,大家好!
我在一本介绍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++建立一个控制台应用程序来测试这些代码,编译没有问题,但是程序运行结果就是一个黑色的窗体,而书中的程序截图是在一个黑色窗体中画了一个白色线条的立方体。请问为什么我执行这段代码就不好用?我应该怎么做?请指教,谢谢!