我想创建一个 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
最佳答案
glew官方版完全不支持OpenGL ES,只支持桌面版OpenGL(OpenGLES是针对移动设备的,尽管它仍然可以在大多数台式机上运行,但glew并没有与之兼容)
因此您需要使用经典的 OpenGL(不能在移动设备上运行)或摆脱 glew。
请注意,存在一些支持 OpenGL ES 的非官方 glew 分支,例如 Linaro 的 glew-es。
感谢奥术工程师,请在此处查看他的回答:https://stackoverflow.com/a/31474052/5085551
关于c++ - 不同类型的Typedef重定义(Emscripten SDL2+OpenGL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37775194/