2017-06-09 17 views
1
私はVisual Studioのコミュニティ2017年使用していますが、このバージョンでは、ネイティブ・アクティビティは、Visual Studioのコミュニティの場合と同様である

私はちょうど新しいネイティブアクティビティを作成しているGLES 2つの機能は、Visual Studioで動作しない

2015このプロジェクトの選択で読み込まれた既定のプログラムを使用して、Visual Studio 2017でプロジェクトを作成します。しかし、私はgles 2を開くために排他的な関数を使用しようとするたびに、Visual Studioは "glCreateShader 'へのエラー:未定義の参照のようなエラーで応答します。でもGLES2/GL2を含めた後、デフォルトのネイティブアクティビティ・プロジェクト(に入れた場合

glClearColor(200, 200, 200, 1); 
glClear(GL_COLOR_BUFFER_BIT); 

次の関数:不思議、次のコードは、私がオープンGL ESの1を含んでPCHファイル内の行を削除していても、動作します。上述したエラーにH、GLES2/gl2ext.h、及びGLES2/gl2platform.h)結果:

int prepareShader(GLuint shaderType, const char * shaderCode) { 
GLuint shader = glCreateShader(shaderType); 
int len = strlen(shaderCode); 
glShaderSource(shader, 1, &shaderCode, &len); 

}

Iは、同様のエラーを添加することにより固定したアンドロイドスタジオで発生覚えcmakelists.txtに続く:

find_library(gl-lib 
     GLESv2) 

find_library(egl-lib 
     EGL) 

target_link_libraries(# Specifies the target library. 
        native-lib 
        ${egl-lib} 
        ${gl-lib}) 

私のVisual StudioプロジェクトではCMakeを使用していませんが、

誰かがVisual Studio 2017でopen gl es 2をうまく使用する方法を教えていただけますか?

答えて

0

私の問題の解決策は、eglGetProcAddressを使用して開いているgl関数を読み込むことです。これは、GLES2/gl2.hが関数を定義していない(関数は実行時に定義されている)ため、各OpenGL es関数を使用する前に各OpenGL関数をポインタに設定する必要があることを意味します。

このような機能を各機能で実行すると、問題が解決します。 (しかし、これを動作させるには、GLES2/gl2.hの関数プロトタイプを削除する必要がありました)。

typedef GLuint(GL_APIENTRYP PFNGLCREATESHADERPROC) (GLenum type); 
PFNGLCREATESHADERPROC glCreateShader = (PFNGLCREATESHADERPROC)eglGetProcAddress("glCreateShader"); 
関連する問題