#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
Linux下X11 + EGL实现OPENGL绘制测试程序
于 2020-07-30 15:16:40 首次发布
本文介绍了如何在Linux系统中利用X11窗口系统和EGL库来实现OpenGL的绘制测试程序,详细讲解了编译过程中需要链接的库包括-lGLESv2、-lEGL和-lX11。
摘要由CSDN通过智能技术生成