1

言語: D
ライブラリ: DerelictGL3

glShaderSource( GLuint,GLsizei,const( GLchar* )*,const( GLint )* )D から呼び出そうとして

います。文字列にシェーダー ソースがあり、最初の引数にシェーダー ID があります。

私が問題を抱えているのは、最後の 3 つの引数の構文です。私が取得できたのはコンパイラ エラーだけです。シェーダーのソースを含む文字列から、最後の 3 つの引数、特に 3 番目の引数に必要なものに移動する方法がわかりません。これを行うconst( GLchar* )*
サンプル コードと、コードが何を行っているかについての説明を探しています。文字列から最後の 3 つの引数に必要なものに移動します。

4

2 に答える 2

1

glShaderSource文字配列の配列と、それらの文字配列の長さの配列を取ります。

「文字配列」を使用するのは、それらが間違いなく D 文字列 (別名immutable(char)[]s、それ自体がポインターと長さのタプル) ではなく、C 文字列 (null で終了する必要があります。サイズ パラメーターを使用すると、それ以外の場合)。

これで、 を使用して D 文字列を C 文字列に変換できますがtoStringz、これは不要な割り当てを行います。代わりに、D 文字列でデータを直接渡すことができます。

// Get the pointer to the shader source data, and put it in a 1-sized fixed array
const(char)*[1] shaderStrings = [vertexShaderSource.ptr];
// Same but with shader source length
GLint[1] shaderSizes = [vertexShaderSource.length];
// Pass arrays to glShaderSource
glShaderSource(vertexShaderID, shaderStrings.length, shaderStrings.ptr, shaderSizes.ptr);
于 2016-03-25T21:53:57.017 に答える