首先要说明一下我的开发环境,Mac系统是macOS Catalina 10.15.1
版本,Xcode是11.2.1
版本,其他开发环境没有测试过,不保证按照这个步骤来有没有问题。
1. 下载资源文件
下载的OpenGL资源文件(链接:https://pan.baidu.com/s/1ksFQ_hWnt2mZRlrpOPByvg 密码:ou4n),解压后里面有个include
文件夹和一个libGLTools.a
文件。
2. 创建工程并导入资源文件
首先在Xcode中创建新工程,工程选择macOS--App
,如下图所示。
![](https://img.haomeiwen.com/i1461152/af441ea67aa1d33b.png)
创建好工程后将工程中的
AppDelegate.h
和AppDelegate.m
两个文件删掉,然后将main.m
文件名改为main.cpp
,再添加OpenGL.framework
和GLUT.framework
2个系统库。如下图所示。![](https://img.haomeiwen.com/i1461152/2960ea16443a844e.png)
然后将下载的资源文中的
include
文件夹拖入工程(勾选Copy items if needed
),再将资源文件中的libGLTools.a
文件拖入Frameworks
文件夹中,同样勾选Copy items if needed
。操作完成后工程目录如下所示:
![](https://img.haomeiwen.com/i1461152/8921be94590b942e.png)
3. 测试
环境搭建好后编写代码测试一下。将main.cpp
文件中的代码替换成如下代码(通过OpenGL绘制一个三角形的代码)。然后运行程序就可以看到绘制的图像了。
#include "GLTools.h"
#include "GLShaderManager.h"
#include "glew.h"
#include <GLUT/GLUT.h>
GLBatch myBatch;
GLShaderManager shaderManager;
void ChangeSize(int w,int h){
glViewport(0,0,w,h);
}
void SetupRC(){
glClearColor(0.0f, 0.8f, 0.5f, 1.0f);
shaderManager.InitializeStockShaders();
GLfloat verts[] = {
-0.25f,0.0f,0.0f,
0.25f,0.0f,0.0f,
0.0f,0.5f,0.0f
};
myBatch.Begin(GL_TRIANGLES, 3);
myBatch.CopyVertexData3f(verts);
myBatch.End();
}
void RenderScene(){
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT);
GLfloat color[] = {0.8f,0.3f,0.0f,1.0f};
shaderManager.UseStockShader(GLT_SHADER_IDENTITY,color);
myBatch.Draw();
glutSwapBuffers();
}
int main(int argc, char * argv[]) {
gltSetWorkingDirectory(argv[0]);
// glutInit(&argc, argv);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);
glutInitWindowSize(800, 600);
glutCreateWindow("绘制三角形");
glutReshapeFunc(ChangeSize);
glutDisplayFunc(RenderScene);
GLenum status = glewInit();
if (GLEW_OK != status) {
printf("GLEW Error:%s\n",glewGetErrorString(status));
return 1;
}
SetupRC();
glutMainLoop();
return 0;
}
![](https://img.haomeiwen.com/i1461152/86f71b7a9160bb2b.png)
网友评论