【OpenGL游戏开发之一】MAC OS X And Win7 vs2010 搭建OpenGL
2014-04-23 17:18
603 查看
MAC OS X
一、环境
1.操作系统:mac2.开发工具: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.创新新项目,选择Xcode主菜单中选择"File"->"New Project"(新建项目),如图2.2,单击"Cocoa Application"图标.虽然将会使用c++、GLUT,但基本的编程框架实际上应用的却是Cocoa.
图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[cpp] view
plaincopy
#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.如:
测试代码:
[cpp] view
plaincopy
//#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版)》
相关文章推荐
- 【OpenGL游戏开发之一】MAC OS X And Win7 vs2010 搭建OpenGL
- 【游戏开发】基于VS2017的OpenGL开发环境搭建
- cocos2dx-2.2.1结合VS2010游戏开发入门(环境搭建)
- 【OpenGL游戏开发之四】Xcode 4.6.2 搭建OpenGL ES
- WIN7系统 用VS2010+OpengL搭建开发平台并实例测试
- OpenGL+VS2010(64位)开发环境搭建(原创)
- OpenGL+VS2010开发环境搭建(亲测可用)
- 搭建VS2010,OpenGL开发环境
- OpenGL游戏开发之一】MAC OS X 搭建OpenGL
- OpenGL简介及+VS2010开发环境搭建及问题解决(亲测成功)【大部分内容转载】
- 游戏开发c++ VS2010配置DirectX开发环境的方法
- 【Visual C++】游戏开发笔记十九 DirectX与OpenGL的博弈
- 【Visual C++】游戏开发笔记十九 DirectX与OpenGL的博弈
- Android游戏开发:游戏框架的搭建(4)
- [OpenGL]VS2010配置OpenGL开发环境
- Cocos2d-x 3.0游戏开发找小三之搭建开发环境
- 如何成为游戏的生产者——第二章:如何开始你的编程(开发环境的搭建、C++语言适应)
- 搭建vs2010 boost开发环境
- junwong 【iOS-Cocos2d游戏开发之一】搭建cocos2d游戏引擎环境HelloWorld!
- cocos2dx游戏开发——微信打飞机学习笔记(四)——GameScene的搭建