gpt4 book ai didi

java - 如何直接将颜色发送到OpenGL着色器

转载 作者:行者123 更新时间:2023-12-02 10:05:35 25 4
gpt4 key购买 nike

我大约 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 ); 其中 redgreenblue[0,1] 范围内的 float 。如果您无权访问整数着色器 ID,那么这实际上取决于您使用的游戏引擎。

关于java - 如何直接将颜色发送到OpenGL着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55361114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com