Linux下X11 + EGL实现OPENGL绘制测试程序

本文介绍了如何在Linux系统中利用X11窗口系统和EGL库来实现OpenGL的绘制测试程序,详细讲解了编译过程中需要链接的库包括-lGLESv2、-lEGL和-lX11。
摘要由CSDN通过智能技术生成
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <sys/time.h>

#include <EGL/egl.h>
#include <EGL/eglext.h>
#include <GLES3/gl3.h>
#include <GLES3/gl3platform.h>

#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif

//esCreateWindow flag - RGB color buffer
#define ES_WINDOW_RGB           0
//esCreateWindow flag - ALPHA color buffer
#define ES_WINDOW_ALPHA         1
//esCreateWindow flag - depth buffer
#define ES_WINDOW_DEPTH         2
//esCreateWindow flag - stencil buffer
#define ES_WINDOW_STENCIL       4
//esCreateWindow flat - multi-sample buffer
#define ES_WINDOW_MULTISAMPLE   8

typedef struct _ESContext {
   
   //Put platform specific data here
   void       *platformData;

   //Put your user data here...
   void       *userData;

   //Window width
   GLint       width;

   //Window height
   GLint       height;

   //Display handle
   EGLNativeDisplayType eglNativeDisplay;

   //Window handle
   EGLNativeWindowType  eglNativeWindow;

   //EGL display
   EGLDisplay  eglDisplay;

   //EGL context
   EGLContext  eglContext;

   //EGL surface
   EGLSurface  eglSurface;

} ESContext;

typedef struct {
   
   GLuint programObject;//项目对象

} UserData;

//获得着色器对象.
GLuint LoadShader ( GLenum type, const char *shaderSrc )
{
   
    //创建着色器对象.
    GLuint shader = glCreateShader ( type );
    if ( shader == 0 ) {
   
        return 0;
    }
    //载入着色器源码.
    glShaderSource ( shader, 1, &shaderSrc, NULL );
    //编译着色器.
    glCompileShader ( shader );
    //检查着色器编译状态.
    GLint compiled;
    glGetShaderiv ( shader, GL_COMPILE_STATUS, &compiled );
    if ( !compiled ) {
   
        glDeleteShader ( shader );
        return 0;
    }

    return shader;
}

int Init ( ESContext *esContext )
{
   
    UserData *userData = (UserData *)esContext->userData;

    //顶点着色器源码.
    char vShaderStr[] =
        "#version 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值