繁体   English   中英

OpenGL ES:将单个float传递给顶点着色器?

[英]OpenGL ES: Pass single float to vertex shader?

我试图将单个浮点数传递给我的顶点着色器,以便可以将gl_PointSize设置为该浮点数。 但是,它不起作用,我认为这是由于我使用glVertexAttribPointer:

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;
}

任何帮助,将不胜感激!

Reto Koradi有了答案! 编译着色器以正确绑定它时,需要事先调用glBindAttribLocation。 现在都在工作!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM