我大约 5 个月前开始 OpenGL 游戏开发。当我第一次开始游戏开发时,我观看了有关游戏引擎的教程。但现在几个月后,我想编辑该游戏引擎上的 openGL 部分之一,但我不知道如何操作。
我不想使用纹理坐标和相应的图像,而只想使用我解析到 OpenGL 着色器的 RGB 颜色。
我用来渲染实体的代码:
public void render(Map<TexturedModel, List<Entity>> entities){
for(TexturedModel model:entities.keySet()){
prepareTexturedModel(model);
List<Entity> batch = entities.get(model);
for(Entity entity:batch){
prepareInstance(entity);
GL11.glDrawElements(GL11.GL_TRIANGLES, model.getRawModel().getVertexCount(), GL11.GL_UNSIGNED_INT, 0);
}
unbindTexturedModel();
}
}
最佳答案
如果您可以直接访问着色器对象(应该是一个原始整数),您可以执行以下操作:
在片段着色器中,可能以.frag或.fsh结尾:
uniform vec3 myColor;
out vec4 fragColor;
void main(){
fragColor=vec4(myColor,1.0);
}
在 Java 代码中,每帧调用 glUseProgram(shaderID)
后,您需要调用 glUniform3f(glGetUniformLocation(shaderID,"myColor"),red,green,blue );
其中 red
、green
和 blue
是 [0,1]
范围内的 float 。如果您无权访问整数着色器 ID,那么这实际上取决于您使用的游戏引擎。
关于java - 如何直接将颜色发送到OpenGL着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55361114/