使用不同类型的Typedef重新定义(Emscripten SDL2 + OpenGL)

时间:2016-06-12 14:11:18

标签: c++ opengl-es-2.0 sdl-2 glew emscripten

我想创建一个OpenGL + SDL2程序,并使用Emscripten编译它。但不幸的是,我甚至无法启动它,因为我在包含错误:

#include <iostream>
#include <string>

#include <emscripten.h>

#include <SDL.h>
#include <SDL_image.h>
#include <SDL_ttf.h>

#define GLFW_INCLUDE_ES2
#include <GL/glew.h>
#include <SDL_opengles2.h>
#include <GL/glu.h>

错误是:

D:\Emscripten\emscripten\1.35.0\system\include\GLES2/gl2.h:39:26: error:
      typedef redefinition with different types ('khronos_ssize_t' (aka 'long')
      vs 'ptrdiff_t' (aka 'int'))
typedef khronos_ssize_t  GLsizeiptr;

后来添加了#define GLFW_INCLUDE_ES2行,但它还没有解决问题。

我使用以下参数编译它:

USE_SDL=2 -s USE_SDL_IMAGE=2 -s SDL2_IMAGE_FORMATS=['png'] -s USE_SDL_TTF=2

1 个答案:

答案 0 :(得分:1)

glew的官方版本根本不支持OpenGL ES,只支持桌面OpenGL(OpenGLES适用于移动设备,尽管它仍可以在大多数台式计算机上运行,​​但不会使它与glew兼容)

所以你需要使用经典的OpenGL(不能在移动设备上工作)或者去掉闪光灯。

请注意,存在一些非正式的glew分叉,例如Linaro的glew-es,它们支持OpenGL ES。

奥术工程师的学分,请在此处查看答案:https://stackoverflow.com/a/31474052/5085551