- Joined
- Jul 11, 2020
- Messages
- 0
- Reaction score
- 25
- Points
- 0
Ersteinmal sei gesagt, dass dieses Tutorial in kurzer Zeit entstand und daher Fehler möglich sind.
Da das Tutorial von Cyberbrick nichtmehr aktuell ist, gebe ich dir hier einfach mal eine kurze anleitung.
Du erstellst dir ersteinmal eine ShaderUtil.
Den Shader loaded mal so:
in deiner ESP Class erstellst du dir anschließend einen Framebuffer, den du jedoch noch nicht initialized.
In meiner RenderMethod initialized du diesen direkt am Anfang mit dieser Methode:
Diesen Framebuffer bindest du dir.
Daraufhin rufst du folgende Methode auf:
anschließend renderst du deine Entitys.
Daraufhin rufst du folgende methode auf:
dann unbindest den Framebuffer wieder.
Nun bindest du den Framebuffer von Minecraft und beginnst mit dem Rendering deines OutlineShaders.
Nun setzt du die Uniforms für deinen OutlineShader.
anschließend musst du deinen Framebuffer Rendern:
nun werden noch diese methoden aufgerufen:
Nun kannst du deinen Shader unbinden
-----------------
Ich hoffe, dass ich nichts vergessen habe.
➥ Doch, die Code-Tags ... (by FantaCoke)
Da das Tutorial von Cyberbrick nichtmehr aktuell ist, gebe ich dir hier einfach mal eine kurze anleitung.
Du erstellst dir ersteinmal eine ShaderUtil.
Den Shader loaded mal so:
Code:
int vertexType = glCreateShader(GL_VERTEX_SHADER);
int fragmentType = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(vertexType, FileUtil.getShaderCode(new InputStreamReader(getClass().getResourceAsStream("fragment/vertex.vert"))));
glShaderSource(fragmentType, FileUtil.getShaderCode(new InputStreamReader(getClass().getResourceAsStream("fragment/" + fragmentShader))));
glCompileShader(vertexType);
glCompileShader(fragmentType);
glAttachShader(program, vertexType);
glAttachShader(program, fragmentType);
glLinkProgram(program);
in deiner ESP Class erstellst du dir anschließend einen Framebuffer, den du jedoch noch nicht initialized.
In meiner RenderMethod initialized du diesen direkt am Anfang mit dieser Methode:
Code:
public static Framebuffer setupFB(Framebuffer frameBuffer) {
if (frameBuffer == null)
return new Framebuffer(mc.displayWidth, mc.displayHeight, true);
if (frameBuffer.framebufferWidth != mc.displayWidth || frameBuffer.framebufferHeight != mc.displayHeight) {
frameBuffer.deleteFramebuffer();
frameBuffer = new Framebuffer(mc.displayWidth, mc.displayHeight, true);
}
return frameBuffer;
}
Diesen Framebuffer bindest du dir.
Daraufhin rufst du folgende Methode auf:
Code:
mc.entityRenderer.setupCameraTransform(mc.timer.renderPartialTicks, 0);
anschließend renderst du deine Entitys.
Daraufhin rufst du folgende methode auf:
Code:
mc.entityRenderer.setupOverlayRendering();
dann unbindest den Framebuffer wieder.
Nun bindest du den Framebuffer von Minecraft und beginnst mit dem Rendering deines OutlineShaders.
Code:
(glUseProgram(bind ? program : 0))
Nun setzt du die Uniforms für deinen OutlineShader.
anschließend musst du deinen Framebuffer Rendern:
Code:
ScaledResolution sr = new ScaledResolution(mc);
glBindTexture(GL_TEXTURE_2D, frameBuffer.framebufferTexture);
glBegin(GL_QUADS);
glTexCoord2d(0, 1);
glVertex2d(0, 0);
glTexCoord2d(0, 0);
glVertex2d(0, sr.getScaledHeight());
glTexCoord2d(1, 0);
glVertex2d(sr.getScaledWidth(), sr.getScaledHeight());
glTexCoord2d(1, 1);
glVertex2d(sr.getScaledWidth(), 0);
glEnd();
nun werden noch diese methoden aufgerufen:
Code:
RenderHelper.disableStandardItemLighting();
mc.entityRenderer.disableLightmap();
Nun kannst du deinen Shader unbinden
-----------------
Ich hoffe, dass ich nichts vergessen habe.
➥ Doch, die Code-Tags ... (by FantaCoke)
20.12.2018 - by FantaCoke
» Code-Tags hinzugefügt
» Beitrag korrekt formatiert
» Code-Tags hinzugefügt
» Beitrag korrekt formatiert
Last edited by a moderator: