2016-12-04 151 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。现在都在工作!

此外,在主持人问我之前,我不能接受他的答案作为正确的答案,因为这是对我原来的问题的评论。

相关问题