I’m reading the ‘OpenGL Super Bible, 6th Edition’ and I tried to copy the exact code. But I can’t figure out why my point isn’t drawing.
package ecumene;
import java.nio.FloatBuffer;
import org.lwjgl.BufferUtils;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL20;
import org.lwjgl.opengl.GL30;
import org.lwjgl.opengl.PixelFormat;
public class Test1 {
private static String fragmentSource[] = {
"#version 430 core \n"+
" \n"+
"out vec4 color; \n"+
" \n"+
"void main(void) \n"+
"{ \n"+
" color = vec4(0.0, 0.8, 1.0, 1.0); \n"+
"} \n"
};
private static String vertexSource[] ={
"#version 430 core \n"+
" \n"+
"void main(void) \n"+
"{ \n"+
" gl_Position = vec4(0.0, 0.0, 0.5, 1.0); \n"+
"} \n"
};
private static int shaderProgram;
private static int fragmentShader;
private static int vertexShader;
private static int vertexArray;
public static void main(String[] args) throws Exception {
{
Display.setDisplayMode(new DisplayMode(800, 600));
Display.setTitle("Screen");
Display.setResizable(false);
Display.create(new PixelFormat());
}
fragmentShader = GL20.glCreateShader(GL20.GL_FRAGMENT_SHADER);
GL20.glShaderSource(fragmentShader, fragmentSource);
GL20.glCompileShader(fragmentShader);
vertexShader = GL20.glCreateShader(GL20.GL_VERTEX_SHADER);
GL20.glShaderSource(vertexShader, vertexSource);
GL20.glCompileShader(vertexShader);
shaderProgram = GL20.glCreateProgram();
GL20.glAttachShader(shaderProgram, vertexShader);
GL20.glAttachShader(shaderProgram, fragmentShader);
GL20.glLinkProgram(shaderProgram);
vertexArray = GL30.glGenVertexArrays();
GL30.glBindVertexArray(vertexArray);
GL11.glPointSize(40.0f);
FloatBuffer backgroundColor = BufferUtils.createFloatBuffer(4);
backgroundColor.put(new float[]{1.0f, 0.0f, 0.0f, 1.0f});
backgroundColor.flip();
while(!Display.isCloseRequested()){
GL30.glClearBuffer(GL11.GL_COLOR, 0, backgroundColor);
GL20.glUseProgram(shaderProgram);
GL11.glDrawArrays(GL11.GL_POINT, 0, 1);
Display.update();
}
GL20.glUseProgram(0);
GL30.glDeleteVertexArrays(vertexArray);
GL20.glDeleteShader(fragmentShader);
GL20.glDeleteShader(vertexShader);
GL20.glDeleteProgram(shaderProgram);
Display.destroy();
}
}
Here’s the result: