OpenGL ES2 0编程三步曲

本文详细介绍了OpenGL ES2.0编程的三个关键步骤:初始化EGL渲染环境,生成并编译Shader,以及创建并执行Program。内容包括Shader对象的创建、编译,Program对象的链接,以及在Linux平台上如何进行OpenGL渲染操作,如清除缓冲区、安装并执行Program等。
摘要由CSDN通过智能技术生成

首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的。教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈~我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转到教程

               

1. 保存全局变量的数据结构

以下例子程序均基于Linux平台。

typedef struct _escontext{
       void*       userData;                    // Put your user data here...   GLint       width;                          // Window width   GLint       height;                         // Window height   EGLNativeWindowType  hWnd;  // Window handle   EGLDisplay  eglDisplay;             // EGL display   EGLContext  eglContext;            // EGL context   EGLSurface  eglSurface;            // EGL surface   // Callbacks   void (ESCALLBACK *drawFunc) ( struct _escontext * );   void (ESCALLBACK *keyFunc) ( struct _escontext *, unsigned char, int, int );   void (ESCALLBACK *updateFunc) ( struct _escontext *, float deltaTime );}ESContext;
typedef struct{
       // Handle to a program object   GLuint programObject;   // Atrribute Location   GLint positionLoc;   GLint textureLoc;   // Uniform location   GLint matrixModeLoc;   GLint matrixViewLoc;   GLint matrixPerspectiveLoc;   // Sampler location   GLint samplerLoc;   // texture   GLuint texture;} UserData;



2. 初始化EGL渲染环境和相关元素(第一步曲)

int InitEGL(ESContext * esContext){     NativeWindowType eglWindow = NULL;     EGLDisplay display;     EGLContext context;     EGLSurface surface;     EGLConfig configs[2];     EGLBoolean eRetStatus;     EGLint majorVer, minorVer;     EGLint context_attribs[] = {EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE};     EGLint numConfigs;     EGLint cfg_attribs[] = {EGL_BUFFER_SIZE,    EGL_DONT_CARE,                             EGL_DEPTH_SIZE,     16,                             EGL_RED_SIZE,       5,                             EGL_GREEN_SIZE,     6,                             EGL_BLUE_SIZE,      5,                             EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,                             EGL_NONE};     // Get default display connection      display = eglGetDisplay((EGLNativeDisplayType)EGL_DEFAULT_DISPLAY);     if ( display == EGL_NO_DISPLAY )     {          return EGL_FALSE;     }     // Initialize EGL display connection     eRetStatus = eglInitialize(display, &majorVer, &minorVer);     if( eRetStatus != EGL_TRUE )     {          return EGL_FALSE;     }     //Get a list of all EGL frame buffer configurations for a display     eRetStatus = eglGetConfigs (display, configs, 2, &numConfigs);     if( eRetStatus != EGL_TRUE )     {          return EGL_FALSE;     }     // Get a list of EGL frame buffer configurations that match specified attributes     eRetStatus = eglChooseConfig (display, cfg_attribs, configs, 2, &numConfigs);     if( eRetStatus != EGL_TRUE  || !numConfigs)     {          return EGL_FALSE;     }     // Create a new EGL window surface     surface 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值