我有一个旋转立方体
但它总是以这样一种方式渲染插值渐变色
我想用一种颜色给单面上色,正好一个三角形,如下图
我的GLSL
第一个
我的GLFW代码
glClearColor(1f, 1f, 1f, 1f)
glClear(GL_COLOR_BUFFER_BIT.toUInt() or GL_DEPTH_BUFFER_BIT.toUInt())
var time = glfwGetTime()
glUniform1f!!(uniformTime, time.toFloat())
glDrawElements(GL_TRIANGLES, verticesIndex.size, GL_UNSIGNED_SHORT, NULL)
glfwSwapBuffers(window)
glfwPollEvents()
我的颜色数组
[
0.8, 0.007315, 0.026764,
0.01696, 0.8, 0.005661,
0.007843, 0.001524, 0.8,
0.01696, 0.8, 0.005661,
0.007843, 0.001524, 0.8,
0.01696, 0.8, 0.005661,
0.007843, 0.001524, 0.8,
0.01696, 0.8, 0.005661,
0.007843, 0.001524, 0.8,
0.01696, 0.8, 0.005661,
0.007843, 0.001524, 0.8,
0.01696, 0.8, 0.005661
]
1条答案
按热度按时间yshpjwxd1#
通常的方法是创建具有颜色属性的网格,其中每个面都有其自己的顶点,这些顶点具有相同颜色的颜色属性。
或者,您可以尝试使用
flat
插值限定符:该值将不会被插值。指定给片段着色器的值是来自该图元的激发顶点的值。
顶点着色器
片段着色器:
另一个选择是为每个三角形图元创建一个颜色数组,并将该颜色数组存储在Shader Storage Buffer Object中。使用
gl_VertexID
在顶点着色器中寻址颜色。