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;
}
任何帮助,将不胜感激!
是什么让你觉得'glVertexAttribPointer'调用是罪魁祸首? – derhass
当我尝试传输一个浮点数时,它的名称中有顶点,我想不出还有什么可能导致这个问题,因为另一部分后来工作正常。 – MysteryPancake
嗯,_Vertex_并不意味着_Vector_。在GL中,顶点只是一组_attributes_,其中每个属性可以是标量或二维到四维向量,因此您在这里使用的顶点属性很好。你真的实际_enable_顶点属性数组1? – derhass