zoukankan      html  css  js  c++  java
  • OpenGL环境搭建

     
    1.打开Xcode -> macOS -> Cocoa Application

    2.添加OpenGl.framework 和GLUT.framework 两个系统库

    3.导入准备的资源包

    1>将include文件夹拖到项目中

    2>将libGLTools.a文件拖入到项目的Framework文件夹中

    4.在 target -> Build Settings -> Header Search Path中添加include的路径: "$(SRCROOT)/OpenGL First/include",其中OpenGL First是我的项目名

     5.删除项目中的 Appdelegate.h、Appdelegate.m 、ViewController.h、ViewController.m、main.m文件

    注:项目是由c++语言编写,并不需要这些OC文件

     

    6.创建main.cpp文件

    7.在main.cpp文件中拷入以下测试代码

      1 #include "GLShaderManager.h"
      2 
      3 #include "GLTools.h"
      4 
      5 #include <GLUT/GLUT.h>
      6 
      7 //定义一个,着色管理器
      8 
      9 GLShaderManager shaderManager;
     10 
     11 //简单的批次容器,是GLTools的一个简单的容器类。
     12 
     13 GLBatch triangleBatch;
     14 
     15 /*
     16 
     17 在窗口大小改变时,接收新的宽度&高度。
     18 
     19 */
     20 
     21 void changeSize(int w,int h)
     22 
     23 {
     24 
     25     glViewport(0, 0, w, h);
     26 
     27 }
     28 
     29 void RenderScene(void)
     30 
     31 {
     32 
     33     //1.清除一个或者一组特定的缓存区
     34 
     35     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT);
     36 
     37     //2.设置一组浮点数来表示红色
     38 
     39     GLfloat vRed[] = {1.0,0.0,0.0,1.0f};
     40 
     41     //传递到存储着色器,即GLT_SHADER_IDENTITY着色器,这个着色器只是使用指定颜色以默认笛卡尔坐标第在屏幕上渲染几何图形
     42 
     43     shaderManager.UseStockShader(GLT_SHADER_IDENTITY,vRed);
     44 
     45     //提交着色器
     46 
     47     triangleBatch.Draw();
     48 
     49     //将后台缓冲区进行渲染,然后结束后交换给前台
     50 
     51     glutSwapBuffers();
     52 
     53 }
     54 
     55 void setupRC()
     56 
     57 {
     58 
     59     //设置清屏颜色(背景颜色)
     60 
     61     glClearColor(0.98f, 0.40f, 0.7f, 1);
     62 
     63     //没有着色器,在OpenGL 核心框架中是无法进行任何渲染的。初始化一个渲染管理器。
     64 
     65     //在前面的课程,我们会采用固管线渲染,后面会学着用OpenGL着色语言来写着色器
     66 
     67     shaderManager.InitializeStockShaders();
     68 
     69     //指定顶点
     70 
     71     //在OpenGL中,三角形是一种基本的3D图元绘图原素。
     72 
     73     GLfloat vVerts[] = {
     74 
     75         -0.5f,0.0f,0.0f,
     76 
     77         0.5f,0.0f,0.0f,
     78 
     79         0.0f,0.5f,0.0f
     80 
     81     };
     82 
     83     triangleBatch.Begin(GL_TRIANGLES, 3);
     84 
     85     triangleBatch.CopyVertexData3f(vVerts);
     86 
     87     triangleBatch.End();
     88 
     89 }
     90 
     91 int main(int argc,char *argv[])
     92 
     93 {
     94 
     95     //初始化GLUT库,这个函数只是传说命令参数并且初始化glut库
     96 
     97     glutInit(&argc, argv);
     98 
     99     /*
    100 
    101     初始化双缓冲窗口,
    102 
    103     */
    104 
    105     glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_DEPTH|GLUT_STENCIL);
    106 
    107     //GLUT窗口大小、窗口标题
    108 
    109     glutInitWindowSize(800, 600);
    110 
    111     glutCreateWindow("Triangle");
    112 
    113     /*
    114 
    115     GLUT 内部运行一个本地消息循环,拦截适当的消息。然后调用我们不同时间注册的回调函数。
    116 
    117     */
    118 
    119     //注册重塑函数
    120 
    121     glutReshapeFunc(changeSize);
    122 
    123     //注册显示函数
    124 
    125     glutDisplayFunc(RenderScene);
    126 
    127     /*
    128 
    129     初始化一个GLEW库,确保OpenGL API对程序完全可用。
    130 
    131     在试图做任何渲染之前,要检查确定驱动程序的初始化过程中没有任何问题
    132 
    133     */
    134 
    135     GLenum status = glewInit();
    136 
    137     if (GLEW_OK != status) {
    138 
    139         printf("GLEW Error:%s
    ",glewGetErrorString(status));
    140 
    141         return 1;
    142 
    143     }
    144 
    145     //设置我们的渲染环境
    146 
    147     setupRC();
    148 
    149     glutMainLoop();
    150 
    151     return  0;
    152 
    153 }
  • 相关阅读:
    python3学习之匿名函数
    python3学习之装饰器
    Linux服务器管理神器-IPython
    Linux 安装python3.4
    Linux一些常用操作命令
    Java并发知识分享
    LINUX 学习笔记 账号与群组的管理
    用JAVA写查询一个字符串中是否包含另外一个字符串以及出现的次数
    jQuery性能优化
    jQuery实用工具函数
  • 原文地址:https://www.cnblogs.com/liuzhi20101016/p/13613125.html
Copyright © 2011-2022 走看看