2016-12-04 130 views
0

我想通過一個浮點數到我的頂點着色器,所以我可以將gl_PointSize設置爲浮點數。但是,它不工作,我認爲它使用glVertexAttribPointer是由於我:OpenGL ES:將單浮點數傳遞給頂點着色器?

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

我需要的緩衝區偏移,因爲我用這還設置使用glVertexAttribPointer位置之前:

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

這是我的頂點結構:

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中,頂點只是一組_attributes_,其中每個屬性可以是標量或二維到四維向量,因此您在這裏使用的頂點屬性很好。你真的實際_enable_頂點屬性數組1? – derhass

回答

0

雷託科拉迪得到了答案!在編譯着色器以正確綁定它時,您需要事先調用glBindAttribLocation。現在都在工作!

此外,在主持人問我之前,我不能接受他的答案作爲正確的答案,因爲這是對我原來的問題的評論。

相關問題