Mue*_*ito 7 c++ android opengl-es android-ndk
根据Khronos OpenGL ES Registry,GLES 3.0的扩展头实际上是<GLES2/gl2ext.h>
.gl3ext.h
应为空,仅提供旧版兼容性.因此,如果要包含GLES 3.0标头,则应该:
#include <GLES3/gl3.h>
#include <GLES2/gl2ext.h>
Run Code Online (Sandbox Code Playgroud)
但是,使用Android NDK进行编译时,看起来gl2ext.h
内部的那个版本会出现#include <GLES2/gl2.h>
以下错误*(我正在使用API-19进行编译):
C:\android-ndk-r10e\platforms\android-19\arch-arm\usr\include\GLES2\gl2ext.h(6): includes this header:
C:\android-ndk-r10e\platforms\android-19\arch-arm\usr\include\GLES2\gl2.h(572,37): error : conflicting types for 'glShaderSource'
GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar** string, const GLint* length);
^
C:\android-ndk-r10e\platforms\android-19\arch-arm\usr\include\GLES3\gl3.h(905,39): note: previous declaration is here
GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length);
Run Code Online (Sandbox Code Playgroud)
这是因为原型glShaderSource
从GLES 2.0改为GLES 3.0核心.这是glext标头的Android NDK版本中的错误,还是我没有做正确的事情?
Mue*_*ito 10
根据迈克尔的评论,我发现这在API-21中得到了修复.但是,如果您仍然需要使用API-18或API-19,则需要解决此问题.你可以简单地说:
#define __gl2_h_
#include <GLES2/gl2ext.h>
Run Code Online (Sandbox Code Playgroud)
当gl2ext.h包含gl2.h时,定义的include guard将导致gl2.h的内容被跳过.
归档时间: |
|
查看次数: |
2411 次 |
最近记录: |