OpenGL常见问题
OpenGL基本观念(一)
• OpenGL是个定义了一个
、
的编程接口的规格,它广泛应用于二、
三维图象的生成。
• OpenGL是个专业的图形程序接口,是一个
功能强大,调用方便的
。
• OpenGL仍然是唯一能够取代微软对3D图
形技术的完全控制的api。
OpenGL基本观念(二)
• OpenGL被设计为只有输出功能的,所以它
。
• 核心api没有窗口系统、音频、打印、键盘/
鼠标或其它输入设备的概念。
• 但是它允许进行渲染的代码完全独立于它
运行的操作系统,允许跨平台开发。
能够以可移植的方式提供基本的窗
口功能。
问题 1
• 用VC6.0写一个OpenGL的控制台程序,最少的配
置是哪些步骤?
• 解答:
• 在window XP下使用VC6安装GLUT
– 下载glutdlls37beta并解压
– 复制glut32.dll和glut.dll到…\windows\system32
– 复制glut.h到...\Microsoft Visual
Studio\VC98\Include\GL
– 复制glut32.lib和glut.lib到…\Microsoft Visual
Studio\VC98\Lib
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
#include
void renderScene(void)
{ //绘制一个简单的二维的三角形
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,0.0,0.0);
glBegin(GL_TRIANGLES); //GL_LINE_STRIP
glFlush();
}
glVertex3f(-0.5,-0.5,0.0);
glVertex3f(0.5,0.0,0.0);
glVertex3f(0.0,0.5,0.0);
glEnd();
void main(int argc, char **argv)
{
glutInit(&argc, argv); //初始化glut
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
//设置窗口的模式-深度缓存,单缓存,颜色模型
glutInitWindowPosition(100,100); //设置窗口的位置
glutInitWindowSize(320,320); //设置窗口的大小
glutCreateWindow("3D Tech- GLUT Tutorial"); //创建窗口并赋予title
glutDisplayFunc(renderScene);//调用renderScene把绘制传送到窗口
glutMainLoop(); //进入循环等待
}
问题 2
• 在没使用GLUT的情况下, 在VC6.0下如何配置
OpenGL?
• 解答:
1. 在你文件头加上
•
•
•
#include
#include
#include
2. 进入Project菜单,选Settings项,弹出 Settings 对话
框,选Link项,在 Libraries 栏目中加入OpenGL库:
opengl32.lib glu32.lib glaux.lib
问题 3
• GL的平台简介:
• 基于OpenGL标准开发的应用程序必须运行于32位Windows
平台下,如WindowsNT或Windows95环境;而且运行时还需有动态
链接库OpenGL32.DLL、Glu32.DLL,一般
在…\WINDOWS\system32里面(注:window2000以上系统均带有
OPENGL32.DLL和glu32.dll)
• 一般来说,VC6和VS.NET里面就带有GL的基本库
– VC6:…\Microsoft Visual Studio\VC98\Include\GL
– VS.NET.2005:…\Microsoft Visual Studio 8\VC\PlatformSDK\Include\gl
– 一般是Gl.h,Glaux.h,Glu.h
– Lib里也有:OpenGL32.lib,GLu32.lib,GLaux.lib
• 所以开发者在VC下可以使用
– #include // Header File For The OpenGL32 Library
– #include // Header File For The GLu32 Library
– #include // Header File For The Glaux Library
• 同时OpenGL也适应别的OS和语言
• 在OpenGL的基础上还有Open Inventor、
Cosmo3D、Optimizer等多种高级图形库,
适应不同应用。可跟据需要下载相关的开
发包。