opengl怎么安装与配置(如何在VS2010配置OpenGL)
本文目录
- 如何在VS2010配置OpenGL
- 如何在VS2010中安装最新版本opengl
- 如何安装opengl visual studio
- 在哪下载opengl , 怎么把它安装到VC++平台上 小白求高人指点
- (解决追加200分)在ubuntu上怎么安装openGL
- 如何在visual studio 中配置opengl
- 如何在mfc中配置opengl
如何在VS2010配置OpenGL
glut.h ---》 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\glglut.dll,glut32.dll ---》 C:\Windows\SysWOW64 (windows7 64位操作系统) ---》 C:\Windows\System32 (windows7 32位操作系统)glut.lib,glut32.lib ---》 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib!!无须!!用宏 #define GLUT_DISABLE_ATEXIT_HACK好多人glut.h不知道放哪里,自己新建了一个文件夹,其实很多前辈在之前就说过,要搜索gl这个文件夹,将glut.h放到里面包含gl.h glu.h这两个文件的gl文件夹中.直接copy下面例程编译即可通过例程如下#include 《gl\glut.h》void myDisplay(void){ glClear(GL_COLOR_BUFFER_BIT); glRectf(-0.5f, -0.5f, 0.5f, 0.5f); glFlush();}int main(int argc, char *argv){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowPosition(100, 100); glutInitWindowSize(400, 400); glutCreateWindow("第一个OpenGL程序"); glutDisplayFunc(&myDisplay); glutMainLoop(); return 0;}================================================1. 把解压得到的glut.h放到"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\gl"(与具体安装位置有关,应该是 安装目录\microsoft sdks\windows\v7.0A\include\gl)2. 把解压得到的glut.lib和glut32.lib放到"“Programfiles(x86)\Microsoft Visual studio 10.0\VC\lib" 中(与具体安装位置有关,同上)3. 把解压得到的glut.dll放到"C:\Windows\System32"4. 把glut32.dll放到“Programfiles(x86)\Microsoft Visual studio 10.0\VC\bin”下(注意这个,网上有人说放到system32里,但是我试过,会报错)(与具体安装位置有关,同上)5. 打开vs2010,随便打开或新建一个项目。 选择 project-》project property-》 Configuration Properties-》Linker-》Input-》Additional Dependencies 在其中添加opengl32.lib glu32.lib glut32.lib 如果这样还报错的话应该注意以下几点:有时候在建console application 的时候添加的cpp文件将后缀句改为 .c有的程序需要glaux工具包,这个下载了,可以按上述步骤添加(操作基本相同) =========================================================================VS较老版本格式转换后 general error c101008a错误。手动添加lib和头文件,然后project clean一下即可。
如何在VS2010中安装最新版本opengl
安装GLUT工具包 GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装。Windows环境下的GLUT下载地址:(大小约为150k)***隐藏网址*** GLUT代表OpenGL应用工具包,英文全称为OpenGL Utility Toolkit,是一个和窗口系统无关的软件包, 它由Mark Kilgard在SGI时写的。作为AUX库的功能更强大的替代品,用于隐藏不同窗口系统API的复杂性。 是一个学习OpenGL编程的一个良好开端。 VS环境配置 将下载的压缩包解开,将得到5个文件(glut.dll, glut32.dll, glut.lib, glut32.lib,glut.h)(1)把glut.h复制到x:\Program Files\Microsoft\Visual Studio 10.0\VC\include\gl文件夹中,如果没有gl这个文件夹则可以自己新建一个。(x是你安装VS的盘符号)(2)把解压得到的glut.lib和glut32.lib放到静态函数库所在文件夹(即与include并排的lib文件夹下)。(3)把解压得到的glut.dll和glut32.dll放到操作系统目录下面的system32文件夹内。(典型的位置为:C:\Windows\System32)(注:如在开发应用程序时用到OpenGL辅助库函数,则还需下载相应动态链接库,包含glaux.dll, glaux.lib, glaux.h,相应步骤同上)***隐藏网址***
如何安装opengl visual studio
分两步:(一)下载glut,并将其放置到适当的位置(二) 进行vs2005项目属性配置*******************************************************************************第一步,***隐藏网址***OpenGL作为当前主流的图形API之一,它在一些场合具有比DirectX更优越的特性。1、与C语言紧密结合。OpenGL命令最初就是用C语言函数来进行描述的,对于学习过C语言的人来讲,OpenGL是容易理解和学习的。如果你曾经接触过TC的graphics.h,你会发现,使用OpenGL作图甚至比TC更加简单。2、强大的可移植性。微软的Direct3D虽然也是十分优秀的图形API,但它只用于Windows系统(现在还要加上一个XBOX游戏机)。而OpenGL不仅用于 Windows,还可以用于Unix/Linux等其它系统,它甚至在大型计算机、各种专业计算机(如:医疗用显示设备)上都有应用。并且,OpenGL 的基本命令都做到了硬件无关,甚至是平台无关。3、高性能的图形渲染。OpenGL是一个工业标准,它的技术紧跟时代,现今各个显卡厂家无一不对OpenGL提供强力支持,激烈的竞争中使得OpenGL性能一直领先。总之,OpenGL是一个很NB的图形软件接口。至于究竟有多NB,去看看DOOM3和QUAKE4等专业游戏就知道了。OpenGL官方网站(英文)***隐藏网址***下面将对Windows下的OpenGL编程进行简单介绍。学习OpenGL前的准备工作(一),选择一个编译环境现在Windows系统的主流编译环境有Visual Studio,Broland C++ Builder,Dev-C++等,它们都是支持OpenGL的。但这里我们选择Visual Studio 2005作为学习OpenGL的环境。(二),安装GLUT工具包GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装。Windows环境下的GLUT下载地址:(大小约为150k)***隐藏网址***无法从以上地址下载的话请使用下面的连接:***隐藏网址***Windows环境下安装GLUT的步骤:1、将下载的压缩包解开,将得到5个文件2、在“我的电脑”中搜索“gl.h”,并找到其所在文件夹(如果是VisualStudio2005,则应该是其安装目录下面的“VC\PlatformSDK\include\gl文件夹”)。把解压得到的glut.h放到这个文件夹。3、把解压得到的glut.lib和glut32.lib放到静态函数库所在文件夹(如果是VisualStudio2005,则应该是其安装目录下面的“VC\lib”文件夹)。4、把解压得到的glut.dll和glut32.dll放到操作系统目录下面的system32文件夹内。(典型的位置为:C:\Windows\System32)(三),建立一个OpenGL工程这里以VisualStudio2005为例。选择File-》New-》Project,然后选择Win32 Console Application,选择一个名字,然后按OK。在谈出的对话框左边点Application Settings,找到Empty project并勾上,选择Finish。然后向该工程添加一个代码文件,取名为“OpenGL.c”,注意用.c来作为文件结尾。搞定了,就跟平时的工程没什么两样的*******************************************************************************第二部分:***隐藏网址***在 Project Properties-》Configuration Properties-》Linker-》Input-》Additional Dependencies 中添加opengl32.lib glu32.lib glaux.lib*******************************************************************************自己曾经出现过的两大问题:一):error LNK2019: unresolved external symbol __imp__glFlush@ 这类的错误或1》PT.obj : error LNK2019: 无法解析的外部符号 _auxSolidSphere@8,该符号在函数 _main 中被引用1》PT.obj : error LNK2019: 无法解析的外部符号 _auxInitWindowA@4,该符号在函数 _main 中被引用1》PT.obj : error LNK2019: 无法解析的外部符号 _auxInitPosition@16,该符号在函数 _main 中被引用1》PT.obj : error LNK2019: 无法解析的外部符号 _auxInitDisplayMode@4,该符号在函数 _main 中被引用 原因是没有在附加依赖项中添加如上lib 文件 解决:Add “opengl32.lib glu32.lib glaux.lib” to Project Properties-》Configuration Properties-》Linker-》Input-》Additional Dependencies 二):error C2664: “auxInitWindowW”: 不能将参数 1 从“const char ”转换为“LPCWSTR” 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换 错误及解决方案: not passing in a Unicode string – put an “L” before the string literal: L”XXXXX” or use the TEXT(”XXXXX”) or _T(”XXXXX”) macros…
在哪下载opengl , 怎么把它安装到VC++平台上 小白求高人指点
第一步,选择一个编译环境 现在 Windows 系统的主流编译环境有Visual Studio, Broland C++ Builder, Dev-C++等,它们都是支持 OpenGL 的。但这里我们选择Visual Studio 2005 作 为学习OpenGL 的环境。 第二步,安装GLUT 工具包 GLUT 不是OpenGL 所必须的,但它会给我们的学习带来一定的方便,推荐安 装。 Windows 环境下的GLUT 下载地址:(大小约为150k)***隐藏网址*** 无法从以上地址下载的话请使用下面的连接:***隐藏网址*** Windows 环境下安装GLUT 的步骤: 1、将下载的压缩包解开,将得到5 个文件 2、在“我的电脑”中搜索“gl.h”,并找到其所在文件夹(如果是 VisualStudio2005,则应该是其安装目录下面的“VC\PlatformSDK\include\gl 文件夹”)。把解压得到的glut.h 放到这个文件夹。 3、把解压得到的glut.lib 和glut32.lib 放到静态函数库所在文件夹(如果是 VisualStudio2005,则应该是其安装目录下面的“VC\lib”文件夹)。 4、把解压得到的glut.dll 和glut32.dll 放到操作系统目录下面的system32 文件夹内。(典型的位置为:C:\Windows\System32) 第三步,建立一个OpenGL 工 这里以VisualStudio2005 为为例。 选择File-》New-》Project,然后选择Win32 Console Application,选择一个名 字,然后按OK。 在谈出的对话框左边点Application Settings,找到 Empty project 并勾上, 选择Finish。 然后向该工程添加一个代码文件,取名为“OpenGL.c”,注意用.c 来作为文件 结尾。 搞定了,就跟平时的工程没什么两样的。
(解决追加200分)在ubuntu上怎么安装openGL
什么叫 Linux无法独立安装OpenGl??需要用到的软件包有两个,glut和tmake,分别可以从以下两个网址下载:***隐藏网址***ftp://ftp.trolltech.com/freebies/tmake/tmake-1.8.tar.gz下载后的文件假设都放在/usr/src中首先是安装glut库,以下是从www.linux.com找到的编译glut库的手册。Install GLUT 3.7 Distribution (optional)If you installed the MesaDemos/MesaLib package, thenyou have already installed GLUT 3.7 since it isincluded with MesaDemos. However, you may beinterested in installing the GLUTmanpages and you can skip right to the "Install GLUTmanual pages", below ...Installing GLUT is a bit tricky. I’m not too familiarwith imake, the program that it uses to manage theMakefiles, and didn’t quite see how to get GLUT toinstall to where I wanted it (/usr/lib,but MesaDemos will do this without any troublethough). It can be done manually anyhow:cd /usr/srctar -xvzf glut-3.7.tar.gzcd glut-3.7Read the file: README.linuxcd linuxREAD the file: READMEcp Glut.cf ..cd ..Edit Glut.cf: remove any Mesa references.Replace any -lMesaGL -lMesaGLU with -lGL -lGLU ifneeded.In particular, replace: OPENGL = $(TOP)/../lib/libMesaGL.so GLU = $(TOP)/../lib/libMesaGLU.sowith: OPENGL = -lGL GLU = -lGLU./mkmkfiles.imakecd lib/glutcp /usr/src/glut-3.7/linux/Makefile .Edit the Makefile: remove any Mesa references.Replace any -lMesaGL -lMesaGLU with -lGL -lGLU ifneeded.In particular, replace: OPENGL = $(TOP)/../lib/libMesaGL.so GLU = $(TOP)/../lib/libMesaGLU.sowith: OPENGL = -lGL GLU = -lGLUmakeln -s libglut.so.3.7 libglut.soln -s libglut.so.3.7 libglut.so.3cp -d libglut.* /usr/libcd ..cd gle# make a shared lib for libglemakegcc -shared -o libgle.so.3.7 *.oln -s libgle.so.3.7 libgle.soln -s libgle.so.3.7 libgle.so.3cp -d libgle.* /usr/libcd ..cd mui# make a shared lib for libmuimakegcc -shared -o libmui.so.3.7 *.oln -s libmui.so.3.7 libmui.soln -s libmui.so.3.7 libmui.so.3cp -d libmui.* /usr/lib # Install the GLUT manual pages (not includedwith MesaDemos)cd /usr/src/glut-3.7make SUBDIRS=man Makefilecd man/glutmake install.manldconfigcd ../../progs/demos/ideas# edit the Makefile, change OPENGL = -lGL and GLU =-lGLUmake./ideas# test compiling some demos# take a look at which libraries have to be linked(-lX11 ...) in# the Makefiles. Qt’s tmake program available atwww.troll.no# is a quick way to make a Makefile but you have toedit it# and add the -l needed.ideas如果运行成功的话,说明glut已经可以用了,这时可以将include/GL下的glut等头文件复制到/usr/include中去。上面的几步中,下载的glut包放在/usr/src目录下,如果放在其他目录下,将/usr/src改为相应的目录即可。此外应该注意的是两个Makefile文件的修改改 · OPENGL = $(TOP)/../lib/libMesaGL.so GLU = $(TOP)/../lib/libMesaGLU.so为 OPENGL = -lGL GLU = -lGLU因为所指定的目录中没有libMesaGL.so和libMesaGLU.so。之后是tmake的配置,后面我们可以用它来生成pro工程文件和makefile文件。先将下载的tmake解压缩,tar -zxvf tmake-1.8.tar.gz得到tmake-1.8目录,之后设置两个环境变量:PATH和TMAKEPATHPATH=$PATH:/usr/src/tmake-1.8/binexport PATHTMAKEPATH=/usr/src/tmake-1.8/lib/linux-g++export TMAKEPATH新建一个测试目录test,将glut-3.7目录下的progs/redbook目录下的hello.c复制到test目录中之后生成一个pro文件:progen -o hello.pro然后生成makefile文件:tmake hello.pro "CONFIG+=opengl"-o Makefile生成的Makefile文件,在加载动态连接库的行里面加入-lglut -lXi -lXmu保存,make。./hello 可以看到运行结果就可以了。PS。不过我编译还是通不过,所以不好给你意见。
如何在visual studio 中配置opengl
1.打开vs2015,运行—devenv2在Visual C++下新建一个win32控制台程序确定—下一步—完成 3项目—管理Nuget程序包4浏览——在搜索栏输入NupenGL,安装这两个文件包5程序测试#include 《GL/glut.h》#include 《stdlib.h》#include 《math.h》#include 《stdio.h》static int year = 0, spin = 0, day = 0;static GLint fogMode;const int n = 100;const GLfloat R = 1.0f;const GLfloat Pi = 3.1415926536f;void DrawCircle() { int i; glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_LINE_LOOP); for (i = 0; i 《 n; ++i) { glColor3f(1.0, 0.0, 0.0); glVertex2f(R*cos(2 * Pi / n*i), R*sin(2 * Pi / n*i)); } glEnd(); glFlush();}void init(void) { GLfloat position = { 0.5, 0.5, 3.0, 0.0 }; glEnable(GL_DEPTH_TEST); //防止遮挡 glLightfv(GL_LIGHT0, GL_POSITION, position); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); { GLfloat mat = { 0.1745, 0.01175, 0.01175 }; glMaterialfv(GL_FRONT, GL_AMBIENT, mat); mat = 0.04136; glMaterialfv(GL_FRONT, GL_DIFFUSE, mat); mat = 0.626959; glMaterialfv(GL_FRONT, GL_SPECULAR, mat); glMaterialf(GL_FRONT, GL_SHININESS, 0.6*128.0); } glEnable(GL_FOG); { GLfloat fogColor = { 0.5, 0.5, 0.5, 1.0 }; fogMode = GL_EXP; glFogi(GL_FOG_MODE, fogMode); glFogfv(GL_FOG_COLOR, fogColor); glFogf(GL_FOG_DENSITY, 0.35); glHint(GL_FOG_HINT, GL_DONT_CARE); glFogf(GL_FOG_START, 1.0); glFogf(GL_FOG_END, 5.0); } glClearColor(0.5, 0.9, 0.9, 1.0); /* fog color */ }void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor3f(0.0, 1.0, 1.0); glPushMatrix(); //记住自己的位置 glutSolidSphere(1.0, 20, 16); /* 画太阳半径、 20经度、16纬度*/ glRotatef(spin, 0.0, 1.0, 0.0); //自转,绕着一个向量以给定角度旋转(正的为逆时针) glTranslatef(2.0, 1.0, 0.0); glRotatef(spin, 1.0, 0.0, 0.0); //公转 glRectf(0.1, 0.1, 0.5, 0.5); glColor3f(0.0, 0.0, 1.0); glutWireSphere(0.2, 8, 8); /* 画第一颗小行星 */ glColor3f(1.0, 0.0, 0.0); glTranslatef(2.0, 1.0, 0.0); glRotatef(2 * spin, 0.0, 1.0, 0.0); glutSolidSphere(0.5, 16, 8); glPopMatrix();//回到原来的位置 glutSwapBuffers();}void spinDisplay(void) { spin = spin + 2; if (spin 》 360) spin = spin - 360; glutPostRedisplay();}void mouse(int button, int state, int x, int y) { switch (button) { case GLUT_LEFT_BUTTON: if (state == GLUT_DOWN) glutIdleFunc(spinDisplay); break; case GLUT_MIDDLE_BUTTON: if (state == GLUT_DOWN) glutIdleFunc(NULL); break; default: break; } }void reshape(int w, int h) { glViewport(0, 0, (GLsizei)w, (GLsizei)h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(60.0, (GLfloat)w / (GLfloat)h, 0.5, 20.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0.0, 10.0, 10.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);}void keyboard(unsigned char key, int x, int y) { switch (key) { case ’d’: day = (day + 10) % 360; glutPostRedisplay(); break; case ’D’: day = (day - 10) % 360; glutPostRedisplay(); break; case ’y’: year = (year + 5) % 360; glutPostRedisplay(); break; case ’Y’: year = (year - 5) % 360; glutPostRedisplay(); break; case 27: exit(0); break; default: break; }}int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize(400, 400); glutInitWindowPosition(100, 100); glutCreateWindow("OpengGL 程序设计测试"); init(); //glutDisplayFunc(DrawCircle); glutDisplayFunc(display); glutReshapeFunc(reshape); //glutKeyboardFunc(keyboard); glutMouseFunc(mouse); glutMainLoop(); return 0;}
如何在mfc中配置opengl
1:新建一个MFC的工程,单文档的工程。2:工程建好之后,可以先编译运行一下。下面就是要把View的窗口初始化为OpenGL的编程环境。当然以下所有的操作都是在View类中进行的。先在Project-》Settings-》Link中,加上opengl32.libglu32.lib glut.lib glaux.lib,然后在View.h的类定义中加上如下引用。#include 《gl\gl.h》#include 《gl\glu.h》 #include 《gl\glaux.h》3:首先要让窗口支持OpenGL,那就必须要对PIXELFORMATDESCRIPTOR这个结构有所了解,先在View类中新建一个函数SetupPixFormat(CDC*pDC),类型:看下面的函数就知道为BOOL,(方法:在classview中,找到**view类,鼠标右击,添加函数)公有私有无所谓,如下:BOOL CTestGLInitialView::SetupPixFormat(CDC *pDC) //我建立的工程名叫TestGLInitial{static PIXELFORMATDESCRIPTOR pfd = //定义像素格式{ sizeof(PIXELFORMATDESCRIPTOR), // 上述格式描述符的大小 1, // 版本号 PFD_DRAW_TO_WINDOW | // 格式支持窗口 PFD_SUPPORT_OPENGL | // 格式必须支持OpenGL PFD_DOUBLEBUFFER, // 必须支持双缓冲 PFD_TYPE_RGBA, // 申请 RGBA 格式 24, // 24位色彩深度,即1.67千万的真彩色 0, 0, 0, 0, 0, 0, // 忽略的色彩位 0, // 无Alpha缓存 0, // 忽略Shift Bit 0, // 无累加缓存 0, 0, 0, 0, // 忽略聚集位 32, // 32位 Z-缓存 (深度缓存) 0, // 无蒙板缓存 0, // 无辅助缓存 PFD_MAIN_PLANE, // 主绘图层 0, // Reserved 0, 0, 0 // 忽略层遮罩};int nIndex = ChoosePixelFormat(pDC-》GetSafeHdc(), &pfd); //选择刚刚定义的像素格式if( nIndex == 0 ) return FALSE;return SetPixelFormat(pDC-》GetSafeHdc(), nIndex, &pfd); //设置像素格式}这个函数的主要目的就是设置窗口的像素格式,使之支持OpenGL,明白这点就行了。在创建窗口的时候,调用这个函数。5:刚刚那个函数是用来在创建窗口是调用的,在创建窗口时,还需要对OpenGL的环境做一些初始化,再定义一个函数InitialGL(),(方法:在classview中,找到**view类,鼠标右击,添加函数)公有私有也无所谓,反正是自己调用的,如下:BOOL CTestGLInitialView::InitialGL(){glShadeModel(GL_SMOOTH); // 启用阴影平滑glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // 黑色背景glClearDepth(1.0f); // 设置深度缓存glEnable(GL_DEPTH_TEST); // 启用深度测试glDepthFunc(GL_LEQUAL); // 所作深度测试的类型glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // 告诉系统对透视进行修正return TRUE; // 初始化 OK}这里的代码我都是抄的NeHe教程上面的代码。6:现在可以捕获WM_CREATE消息了(方法:view--》classvizard --》messagesmaps:classname选**view,找到WM_CREATE,添加函数,代码)。但是,还要先定义一个CClientDC*的成员,(方法:在classview中,找到**view类,鼠标右击,添加函数成员变量。类型:CClientDC*,名字:m_pDC)这个成员指向View窗口自己,是用来传递给SetupPixFormat(CDC*pDC)函数的,没别的意思。现在,来捕获WM_CREATE消息(),写上如下代码:int CTestGLInitialView::OnCreate(LPCREATESTRUCT lpCreateStruct){if (CView::OnCreate(lpCreateStruct) == -1) return -1;// TODO: Add your specialized creation code herem_pDC = new CClientDC(this);SetupPixFormat(m_pDC);HGLRC hrc = wglCreateContext(m_pDC-》GetSafeHdc());wglMakeCurrent(m_pDC-》GetSafeHdc(), hrc);InitialGL();return 0;}当然,当窗口关闭的时候,还应该要释放一些资源。捕获WM_DESTROY消息,(方法:view--》classvizard--》messages maps:classname 选**view,找到WM_DESTROY,添加函数,代码)写下如下代码:void CTestGLInitialView::OnDestroy(){CView::OnDestroy();// TODO: Add your message handler code hereHGLRC hrc = wglGetCurrentContext();wglMakeCurrent(NULL, 0);wglDeleteContext(hrc);delete m_pDC;}现在可以编译一下了,没有错误。7:现在,OpenGL的环境已经初始化差不多了。可以开始做图了,先定义一个作图的函数DrawScene(),写上如下的代码:BOOL CTestGLInitialView::DrawScene(){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清除屏幕和深度缓存glLoadIdentity(); // 重置当前的模型观察矩阵SwapBuffers(m_pDC-》GetSafeHdc()); // 交换缓冲区return TRUE;}然后,要在OnDraw中,调用这个函数:void CTestGLInitialView::OnDraw(CDC* pDC){CTestGLInitialDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereDrawScene();}8:运行一下,黑色的背景出来了。9:这时,可以修改DrawScene()这个作图函数,作图。画出NeHe第3课的那个三角形和正方形来。写代码如下:BOOL CTestGLInitialView::DrawScene(){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清除屏幕和深度缓存glLoadIdentity(); // 重置当前的模型观察矩阵glTranslatef(-1.5f,0.0f,-6.0f); // 左移 1.5 单位,并移入屏幕 6.0glBegin(GL_TRIANGLES); // 绘制三角形glColor3f(1.0f, 0.0f, 0.0f);glVertex3f( 0.0f, 1.0f, 0.0f); // 上顶点glColor3f(0.0f, 1.0f, 0.0f);glVertex3f(-1.0f,-1.0f, 0.0f); // 左下glColor3f(0.0f, 0.0f, 1.0f);glVertex3f( 1.0f,-1.0f, 0.0f); // 右下glEnd(); // 三角形绘制结束glTranslatef(3.0f,0.0f,0.0f); // 右移3单位glColor3f(0.0f, 0.0f, 1.0f);glBegin(GL_QUADS); // 绘制正方形glVertex3f(-1.0f, 1.0f, 0.0f); // 左上glVertex3f( 1.0f, 1.0f, 0.0f); // 右上glVertex3f( 1.0f,-1.0f, 0.0f); // 左下glVertex3f(-1.0f,-1.0f, 0.0f); // 右下 glEnd();SwapBuffers(m_pDC-》GetSafeHdc()); // 交换缓冲区return TRUE;}运行一下,发现图形没有出现,这个怎么回事呢。原来是因为还没有定义投影方式和视口。即用正交投影还是透视投影。定义投影,还要捕获WM_SIZE消息。写如下代码:void CTestGLInitialView::OnSize(UINT nType, int cx, int cy){CView::OnSize(nType, cx, cy);// TODO: Add your message handler code hereif (0 == cy) // 防止被零除{ cy = 1; // 将Height设为1}glViewport(0, 0, cx, cy); // 重置当前的视口glMatrixMode(GL_PROJECTION); // 选择投影矩阵glLoadIdentity(); // 重置投影矩阵// 设置视口的大小gluPerspective(45.0f,(GLfloat)cx/(GLfloat)cy,0.1f,100.0f);glMatrixMode(GL_MODELVIEW); // 选择模型观察矩阵glLoadIdentity(); // 重置模型观察矩阵}再运行一下,图形已经出来了。以后,就可以在DrawScene()写任何画图的代码了,当窗口重绘的时候,都可以自动适应。如果要做一段可以运动的3D图画,可以再捕获WM_TIMER消息,通过在OnCreate的时候定义一个时钟,再配合一些变量,就可以做简单的动画了
更多文章:
word转换成pdf用什么软件(把Word转换成PDF,哪个软件好)
2024年6月30日 06:50
戴尔mcafee要不要卸载(戴尔笔记本上的迈克菲中心需不需要卸载)
2024年5月22日 10:20
为什么有人说咪蒙、张伟是优秀的产品经理?销售经理带领团队思路
2024年7月3日 16:04
金山毒霸有必要安装吗(windows7有必要安装金山毒霸吗)
2024年8月12日 11:21
mysql虚拟主机(虚拟主机如何导入mysql/mssql数据库,怎样导入数据库备份到库)
2023年10月2日 15:20
真人四人麻将免费版(安庆真人麻将四人麻将打钱5元以下是多少)
2024年7月17日 22:50
中望cad2007授权号(帮忙算中望CAD2007标准版授权号)
2024年3月21日 10:15
复星医药股票(拍板减持复星医药,不是郭广昌决定的曾坦诚此举是一败笔)
2024年6月24日 05:40