0

私のプログラムはWindows環境では正常に動作しますが、Androidでコンパイルしようとすると、関数や定数が宣言されていないというエラーが発生します。これらには以下が含まれます:

GL_DEPTH24_STENCIL8,
GL_DEPTH_STENCIL,
GL_UNSIGNED_INT_24_8,
GL_DRAW_FRAMEBUFFER,
glPointSize()

他の方法はうまくいくようです。グラフィック用に次のヘッダーを含めます。

#include <EGL/egl.h>
#include <GLES2/gl2.h>

何かが足りないのでしょうか、それともこれらの定数と関数を実際に使用できないのでしょうか。

4

1 に答える 1

1

これは、OpenGL の ES バージョンでは動作しない一方で、OpenGL のすべてのバージョンと互換性のあるデスクトップ マシンで即時または Opengl デスクトップ関数を使用しているという事実によるものです。たとえば、多くの人が最初のエンジンを即時モードで実装してから、OpenGL ES 2.0 デバイスに移植しようとします。

OpenGL ES 2.0 には、公式ドキュメントに記載されている独自の関数セットがあります。http://www.khronos.org/opengles/sdk/docs/man/

報告された関数の 1 つを使用するために、glpointsize は OpenGL ES 2.0 ではサポートされていません。これは、イミディエイト モードのようにメイン コードではなく、シェーダーでポイントのサイズを制御するためです。この非常に特殊なサイズでは、ポイント スプライト (非常に大まかに) は次のような関数を使用して頂点シェーダーで制御されます。

gl_PointSize = 10.0;

これは、OpenGL ES 2.0 への移植でエンジンの完全な書き直しが必要になる場合があることに気付いた典型的なケースです。

于 2013-01-22T08:44:17.383 に答える