3、OpenGL - Mac 上的环境配置

OpenGL - Mac 上的环境配置

 

准备资料:

  • CLTools
  • glew
  • libGLTools.a

资源地址可以去我上传的GitHub上下载

地址 -> OpenGL -> 1、配置文件

 

一、配置过程

1、打开xcode -> macOS -> Cocoa Application

 

2、添加OpenGL.framwork 和 GLUT.framework 两个系统库

 

3、添加CLTools.h ,glew.h

在Bulid Setting 输入 Header Search path 中拖入GLTool.h 和  glew.h 生成路径

 

4、创建main.cpp 文件

libGLTools.a 直接拖到工程的Framworks 文件里面,另外删除文件 AppDelegate.h、 AppDelegate.m、main.m、ViewController.h、ViewController.m 创建main.cpp 文件

 

二、测试一下,显示一个三角形

在main.cpp中复制一下代码

#include <stdio.h>
#include "GLTools.h"
#include <glut/glut.h>

GLBatch triangleBatch;
GLShaderManager shaderManager;

//窗口大小改变时接收新的宽度和高度,其中0,0 代表窗口中视图左下角坐标,w h 代表像素
void ChangeSize(int w, int h){
    glViewport(0, 0, w, h);
}
oid 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分别指双缓冲窗口、RGB颜色模式、深度测试、模板缓冲区
    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;
}

结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值