2016-06-12 87 views
3

我想创建一个OpenGL + SDL2程序,并使用Emscripten进行编译。但不幸的是,我不能甚至开始,因为我得到一个错误的包括:不同类型的Typedef重定义(Emscripten SDL2 + OpenGL)

#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 
+0

出于好奇:为什么使用C++程序一个C API的图形?像SFML这样的图形api更适用于C++程序。 – Boiethios

回答

1

,GLEW的官方版本不支持OpenGL ES可言,只有桌面的OpenGL(OpenGLES是移动设备,尽管它仍然可以大多数桌面上工作电脑,但glew不会与它兼容)

所以,你需要使用经典的OpenGL(不会在手机上工作)或摆脱笨拙。

请注意,一些非官方的glew叉会存在,如Linaro的glew-es,它们支持OpenGL ES。

积分奥术工程师,看到他的答案在这里:https://stackoverflow.com/a/31474052/5085551

相关问题