【发布时间】:2017-05-29 20:43:29
【问题描述】:
我为基于体素的世界开发了一个渲染引擎,它使用了一种非常有效的渲染方案。通过加载新材质,我已经能够使用特定颜色进行渲染。我遇到的问题是加载一个简单地使颜色看起来不错的着色器。我以前在 LWJGL 中做过这个,但我似乎无法用 LibGdx 得到它。我已经阅读了所有 blog.xoppa 并且很明显,着色器是我现在最苦苦挣扎的东西。也许我需要某种 SSAO 着色器或 deferredAO 着色器?
Shader.frag
varying vec3 position;
varying vec3 normal;
varying vec4 color;
void main(){
vec4 ambient = vec4( vec3(abs(normal.x)*.8 + abs(normal.z)*.9 + abs(normal.y)*1), 1);
gl_FragColor = vec4(color) * ambient;
}
Shader.vert
varying vec3 position;
varying vec3 normal;
varying vec4 color;
void main(){
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
gl_FrontColor = gl_Color;
position = vec3(gl_Vertex);
normal = vec3(gl_Normal);
color = vec4(gl_Color);
}
我的 TestShader 扩展了 Shader,我也有所有其他实现的方法。这些是相关的。
...
@Override
public void init() {
program = new ShaderProgram(vert, frag);
if (!program.isCompiled())
throw new GdxRuntimeException(program.getLog());
} ...
@Override
public void begin(Camera camera, RenderContext context) {
this.camera = camera;
this.context = context;
program.begin();
context.setDepthTest(GL_LEQUAL);
context.setCullFace(GL_BACK);
} ...
@Override
public void render(Renderable renderable) {
renderable.meshPart.render(program);
} ...
【问题讨论】:
-
这是 OpenGL ES 还是桌面 OpenGL?
-
@NicolBolas 在桌面上使用 libgdx 所以它的 OpenGl ES
标签: opengl-es libgdx glsl lwjgl