• openGL的第一课


      1 #include <stdio.h>
      2 #include <GLTools.h>
      3 
      4 #include <GLShaderManager.h>
      5 
      6  
      7 
      8 #ifdef __APPLE__
      9 
     10 #include <GLUT/glut.h>
     11 
     12 #else
     13 
     14 #define FREEGLUT_STATIC
     15 
     16 #include <GL/glut.h>
     17 
     18 #endif
     19 
     20  
     21 
     22 GLBatch triangleBatch;
     23 
     24 GLShaderManager shaderManager;
     25 
     26  
     27 
     28 void changeSize( int W, int H )
     29 
     30 {
     31 
     32     glViewport(0, 0, W, H);
     33 
     34 }
     35 
     36  
     37 
     38 void SetupRc()
     39 
     40 {
     41 
     42     glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
     43 
     44     
     45 
     46     shaderManager.InitializeStockShaders();
     47 
     48     
     49 
     50     GLfloat vVerts[] = { -0.5f, 0.0f, 0.0f,
     51 
     52                         0.5f, 0.0f, 0.0f,
     53 
     54                         0.0f, 0.5f, 0.0f};
     55 
     56     
     57 
     58     triangleBatch.Begin(GL_TRIANGLES, 3);
     59 
     60     triangleBatch.CopyVertexData3f(vVerts);
     61 
     62     triangleBatch.End();
     63 
     64 }
     65 
     66  
     67 
     68 void   RenderScene()
     69 
     70 {
     71 
     72     glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT );
     73 
     74     
     75 
     76     GLfloat vRed[] = { 1.0f, 0.0f, 0.0f, 1.0f };
     77 
     78     shaderManager.UseStockShader( GLT_SHADER_IDENTITY,vRed );
     79 
     80     triangleBatch.Draw();
     81 
     82     
     83 
     84     glutSwapBuffers();
     85 
     86 }
     87 
     88  
     89 
     90 int main( int argc, char* argv[] )
     91 
     92 {
     93 
     94     //设置当前工作目录
     95 
     96     gltSetWorkingDirectory(argv[0]);
     97 
     98     
     99 
    100     //初始化glut
    101 
    102     glutInit(&argc, argv);
    103 
    104     
    105 
    106     //设置显示模式
    107 
    108     glutInitDisplayMode( GLUT_DEPTH|GLUT_RGBA|GLUT_STENCIL|GLUT_DOUBLE );
    109 
    110     
    111 
    112     //初始化窗口
    113 
    114     glutInitWindowSize(800, 600);
    115 
    116     
    117 
    118     //创建窗口,并且命名
    119 
    120     glutCreateWindow( "Triangle" );
    121 
    122     
    123 
    124     
    125 
    126     glutReshapeFunc(changeSize);
    127 
    128     
    129 
    130     glutDisplayFunc(RenderScene);
    131 
    132     
    133 
    134     GLenum err = glewInit();
    135 
    136     if (err !=GLEW_OK )
    137 
    138     {
    139 
    140         fprintf(stderr, "GLEW Error: %s
    ",glewGetErrorString(err) );
    141 
    142         return 1;
    143 
    144     }
    145 
    146     
    147 
    148     SetupRc();
    149 
    150     
    151 
    152     //开启OpenGL主循环
    153 
    154     glutMainLoop();
    155 
    156     
    157 
    158     
    159 
    160     return 0;
    161 
    162 }
    163 
    164  

    最近开始对OpenGL进行了一下恶补,不得不说,蓝宝书,真的是本好书!

  • 相关阅读:
    android外存文件读写
    android内存文件读写
    SearchView的使用
    Notification的使用(待完善)-〉添加点击取消,显示优化
    列表Dialog和“确认”、“取消”Dialog
    PopupWindow弹出窗口的使用
    侧拉菜单
    腾讯分析移动设备屏幕分辨率分析报告--转
    git hub使用
    input 原始版,后面修改
  • 原文地址:https://www.cnblogs.com/VindyLeong/p/4165070.html
Copyright © 2020-2023  润新知