【OpenGL游戏开发之一】MAC OS X And Win7 vs2010 搭建OpenGL
来源:互联网 发布:linux 映射内网端口 编辑:程序博客网 时间:2024/05/24 01:27
MAC OS X
一、环境
1.操作系统:mac
2.开发工具:Xcode 4.6.2
3.opengl文件:GLTools,GLUT和OpenGL(http://www.starstonesoftware.com/OpenGL/)
注:若访问服务器出问题,就来这里下载: http://download.csdn.net/download/zhanyong168/4863389
二、搭配环境
1.添加GLTools头文件(在下载文件SB5/Src/GLTools),为了Snow Leopard预构建的32/64位进制文件也包含在Xcode源码中。要完成这一步,我们只需在Xcode代码树(Source Tree)设置中添加一个自定义设置。如图2.1所示的对话框可以从Xcode/Preference菜单中进行访问。通过“+”按钮添加设置。注:Setting Name 设置为GLTOOLS_INCLUDE(必须添加),Display Name 设置为GLTools include Folder,Path 设置为 ~/Desktop/SuperBible5/src/GLTools/include(添加文件路径)
图2.1
图2.2
3.至于基于GLUT的项目,需要删除“TriangleAppDelegate.*”文件和"main.m"文件。通过在文件名上单击一次来加亮Xcode中的这些文件,然后按"Delete"键。继续单击确认对话框中的"Also Move To Trash"(同时放入回收站)按钮来完全删除这些文件。我们还可以删除"Resource"(资源)组下的"MainMenu.xib"文件.
4.右键单击"Frameworks"(框架)文件组,添加"OpenGL.framework"和"GLUT.framework"(下载源代码章节样例或者System/Library/Frameworks/GLUT.framework).还有一个方法直接拉文件添加到"Frameworks"。
5.我们需要添加GLTools库。单击项目图标,如图2.3 ,找到"Header Search Paths"区域单击,键入$(GLTOOLS_INCLUDE).按下"Enter"(回车)。
图2.3
6.接着需要将LibGLTools.a文件添加到项目中。只需要拖拽libGLTools.a文件(在发布源代友文件的/Xcode/Xcode/GLTools文件夹中)并放到Xcode中的"Frameworks"(框架)中。
7.最后,添加C++源文件并开始编译了!右键单击"Supporting Files"y文件夹并选择Add->New File(新文件),选择"C++ File",命名"Triangle",添加后,删除头文件,最终项目如图2.4。
图2.4
三、编译工程
1.Triangle.cpp
- #include <GLTools.h>
- #include <GLShaderManager.h>
- #ifdef __APPLE__
- #include <glut/glut.h>
- #else
- #define FREEGLUT_STATIC
- #endif
- GLBatch triangleBatch;
- GLShaderManager shaderManager;
- //窗口大小改变时接受新的宽度和高度,其中0,0代表窗口中视口的左下角坐标,w,h代表像素
- void ChangeSize(int w,int h)
- {
- glViewport(0, 0, w, h);
- }
- //为程序作一次性的设置
- void SetupRC()
- {
- //设置背影颜色
- glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
- //初始化着色管理器
- shaderManager.InitializeStockShaders();
- //设置三角形,其中数组vVert包含所有3个顶点的x,y,笛卡尔坐标对。
- GLfloat vVerts[] = {
- -0.5f,0.0f,0.0f,
- 0.5f,0.0f,0.0f,
- 0.0f,0.5f,0.0f,
- };
- //批次处理
- triangleBatch.Begin(GL_TRIANGLES,3);
- triangleBatch.CopyVertexData3f(vVerts);
- triangleBatch.End();
- }
- //开始渲染
- void RenderScene(void)
- {
- //清除一个或一组特定的缓冲区
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
- //设置一组浮点数来表示红色
- GLfloat vRed[] = {1.0f,0.0f,0.0f,1.0f};
- //传递到存储着色器,即GLT_SHADER_IDENTITY着色器,这个着色器只是使用指定颜色以默认笛卡尔坐标第在屏幕上渲染几何图形
- shaderManager.UseStockShader(GLT_SHADER_IDENTITY,vRed);
- //提交着色器
- triangleBatch.Draw();
- //将在后台缓冲区进行渲染,然后在结束时交换到前台
- glutSwapBuffers();
- }
- int main(int argc,char* argv[])
- {
- //设置当前工作目录,针对MAC OS X
- gltSetWorkingDirectory(argv[0]);
- //初始化GLUT库
- glutInit(&argc, argv);
- /*初始化双缓冲窗口,其中标志GLUT_DOUBLE、GLUT_RGBA、GLUT_DEPTH、GLUT_STENCIL分别指
- 双缓冲窗口、RGBA颜色模式、深度测试、模板缓冲区*/
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);
- //GLUT窗口大小,标题窗口
- glutInitWindowSize(800, 600);
- glutCreateWindow("Triangle");
- //注册回调函数
- glutReshapeFunc(ChangeSize);
- glutDisplayFunc(RenderScene);
- //驱动程序的初始化中没有出现任何问题。
- GLenum err = glewInit();
- if (GLEW_OK != err) {
- fprintf(stderr, "glew error:%s\n",glewGetErrorString(err));
- return 1;
- }
- //调用SetupRC
- SetupRC();
- glutMainLoop();
- return 0;
- }
2.点击运行,效果如图2.5。
Win7 vs2010
glut下载地址: http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip
glut.h ---> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\gl
glut.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
打开vs2010,随便打开或新建一个项目。 选择 project->project property-> Configuration Properties->Linker->Input->Additional Dependencies 在其中添加opengl32.lib glu32.lib glut32.lib.如:
测试代码:
- //#include "stdafx.h"
- #include <Gl\glut.h>
- void myDisplay(void)
- {
- glClear(GL_COLOR_BUFFER_BIT);
- glColor3f (1.0,0.0,0.0);
- glBegin (GL_LINES);
- glVertex2i (180,15);
- glVertex2i (10,145);
- glEnd();
- glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
- glFlush();
- }
- void init (void)
- {
- glClearColor(1.0 ,1.0, 1.0,0.0);
- glMatrixMode (GL_PROJECTION);
- gluOrtho2D(0.0,200.0,0.0,150.0);
- }
- int main(int argc,char * argv[])
- {
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
- glutInitWindowPosition(50, 100);
- glutInitWindowSize(400,300);
- glutCreateWindow("OpenGL");
- init ();
- glutDisplayFunc(&myDisplay);
- glutMainLoop();
- return 0;
- }
运行效果图:
各位网友,若有更好的方法,请留言,大家互相交流。
参考书籍《OpenGL 超级宝典(第5版)》
0 0
- 【OpenGL游戏开发之一】MAC OS X And Win7 vs2010 搭建OpenGL
- 【OpenGL游戏开发之一】MAC OS X And Win7 vs2010 搭建OpenGL
- opengl+vs2010+win7环境搭建
- OpenGL on Mac OS X
- Win7 上 iPhone开发环境搭建之一VMware上安装Mac OS X Server 10.6
- Win7 上 iPhone开发环境搭建之一VMware上安装Mac OS X Server 10.6
- 搭建VS2010,OpenGL开发环境
- MAc Os X OPENGL 的初步探索
- Mac OS X下如何使用OpenGL
- Mac OS X下如何使用OpenGL
- Mac OS X下如何使用OpenGL
- win7 + vs2010下opengl开发环境
- VS2010+Win7配置OpenGL开发环境
- Win7 64 + VS2010 + OpenGL 开发环境配置
- win7+vs2010+opengl
- win7+VS2010+OpenGL配置
- OpenGL Win7 VS2010
- WIN7+VS2010+OpenGL配置
- 代码实现UITableViewCell表视图单元定制
- titanium 引用外部js
- WIP 离散工单导入 API Demo
- 【数据结构&&算法系列】快速排序简单介绍及实现
- UVa 11817 Tunnelling the Earth(球面距离)
- 【OpenGL游戏开发之一】MAC OS X And Win7 vs2010 搭建OpenGL
- 【Android】在有menu键的手机上显示ActionBar上的Menu键
- 邻居好说话:冒泡排序
- 澳洲品牌SONIQ声光登入中国 多重量级商品发布
- spring整合hibernate(注解、xml)applicationContext.xml配置
- 表视图的分组分区和索引分区
- <四> cocos2dx动画常见22种特效
- jquery使用自己获得的值来拼凑id
- 键索数组引符号表