2016-12-04 22 views
0

私は頂点シェーダに単一のfloatを渡そうとしているので、gl_PointSizeをfloatに設定することができます。しかし、それは働いていないと私はそれがglVertexAttribPointer使用して、私が原因だと思う:OpenGL ES:シングルフロートを頂点シェーダに渡しますか?

glVertexAttribPointer(0, 2, GLenum(GL_FLOAT), GLboolean(GL_FALSE), GLsizei(MemoryLayout<Vertex>.size), BUFFER_OFFSET(0)) 

この:私は、私もこれを使用して、その前にglVertexAttribPointerを使用して位置を設定していますので、オフセットバッファを必要とする

glVertexAttribPointer(1, 1, GLenum(GL_FLOAT), GLboolean(GL_FALSE), GLsizei(MemoryLayout<Vertex>.size), BUFFER_OFFSET(2 * MemoryLayout<Float>.size)) 

を私の頂点構造である:

struct Vertex { 
    var x, y, size: Float 
} 

これは、頂点シェーダである:

attribute vec4 Position; 
attribute float Size; // I tried vec4, no luck 

void main(void) { 
    gl_PointSize = Size; 
    gl_Position = Position; 
} 

ご協力いただければ幸いです!

+0

あなたは 'glVertexAttribPointer'呼び出しが原因だと思いますか? – derhass

+0

浮動小数点を転送しようとしているときに名前に頂点があり、後で別の部分がうまく動作するため、他に何が問題になるか考えられません。 – MysteryPancake

+0

_Vertex_は_Vector_を意味しません。 GLでは、Vertexは単に_attributes_のセットです。各属性はスカラまたは2次元から4次元のベクトルになります。ここでは頂点属性の使用は問題ありません。実際にvertex attrib array 1を有効にできませんでしたか? – derhass

答えて

0

レトコラディが答えました!シェーダをコンパイルして正しくバインドするには、あらかじめglBindAttribLocationを呼び出す必要があります。それはすべて今働いている!

また、司会者が私に尋ねる前に、元の質問に対するコメントだったので、彼の答えを正しい答えとして受け入れることはできません。

関連する問題