Hallo,
ich bin jüngst unter die "Spielentwickler" gegangen und baue gerade Agar.io nach. Mit der kleinen Besonderheit, dass eine 3D-Engine dafür verwende. Agar.io hat einen Hintergrund der sich am besten mit einer Seite von einem karierten Collegeblock vergleichen lässt.
Ich habe hier mal eine Aufnahme, von meinen Spiel gemacht:
Wie Ihr dort sehen könnt wird der Hintergrund gut gerendert, wenn ich relativ nah am Spieler bin, sobald ich raus zoome "flackert" der Hintergrund und scheint zu verschwimmen (Kann man gut in der Sekunde 4-6 sehen).
Ich benutzte das LWJGL-Framework mit der Version 3.1.5.
Die render Methode:
Fragmentshader
Vertexshader
Sagt bitte Bescheid, wenn Ihr noch mehr Infos braucht.
Danke im voraus für eure Antworten!
VG Meeresgott
ich bin jüngst unter die "Spielentwickler" gegangen und baue gerade Agar.io nach. Mit der kleinen Besonderheit, dass eine 3D-Engine dafür verwende. Agar.io hat einen Hintergrund der sich am besten mit einer Seite von einem karierten Collegeblock vergleichen lässt.
Ich habe hier mal eine Aufnahme, von meinen Spiel gemacht:
Ich benutzte das LWJGL-Framework mit der Version 3.1.5.
Die render Methode:
Java:
public void render() {
if (texture != null) {
// Activate firs texture bank
glActiveTexture(GL_TEXTURE0);
// Bind the texture
glBindTexture(GL_TEXTURE_2D, texture.getId());
}
// Draw the mesh
glBindVertexArray(getVaoId());
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glEnableVertexAttribArray(2);
glDrawElements(GL_TRIANGLES, getVertexCount(), GL_UNSIGNED_INT, 0);
// Restore state
glDisableVertexAttribArray(0);
glDisableVertexAttribArray(1);
glDisableVertexAttribArray(2);
glBindVertexArray(0);
glBindTexture(GL_TEXTURE_2D, 0);
}
Fragmentshader
Code:
#version 330
in vec2 outTexCoord;
out vec4 fragColor;
uniform sampler2D texture_sampler;
uniform vec3 colour;
uniform int useColour;
void main()
{
if ( useColour == 1 )
{
fragColor = vec4(colour, 1);
}
else
{
fragColor = texture(texture_sampler, outTexCoord);
}
}
Vertexshader
Code:
#version 330
layout (location=0) in vec3 position;
layout (location=1) in vec2 texCoord;
layout (location=2) in vec3 vertexNormal;
out vec2 outTexCoord;
uniform mat4 modelViewMatrix;
uniform mat4 projectionMatrix;
uniform float textureMulti;
void main()
{
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
outTexCoord = texCoord * textureMulti;
}
Sagt bitte Bescheid, wenn Ihr noch mehr Infos braucht.
Danke im voraus für eure Antworten!
VG Meeresgott