-
Notifications
You must be signed in to change notification settings - Fork 1
Hello Triangle
Richard Andrew Cattermole edited this page Sep 22, 2013
·
2 revisions
Here is a very basic program which creates a window of 800x600 pixels that has a title of "OpenGL Window" which will close upon being x'd. In the window it has a red triangle on a grey background.
module test;
import doogle.platform;
import doogle.window.window;
import doogle.gl.shaders;
import doogle.gl.buffers;
import doogle.gl.vertexarray;
import core.thread;
import gl3n.linalg;
import std.stdio;
void main() {
shared Window window = new shared Window(800, 600, "OpenGL Window"w, WindowStyle.Close);
shared ShaderProgram program = new shared ShaderProgram("""
#version 150
in vec2 position;
void main() {
gl_Position = vec4(position, 0.0, 1.0);
}
""","""
#version 150
out vec4 outColor;
void main() {
outColor = vec4(1.0, 0.0, 0.0, 1.0);
}
""");
vec3[] vertices = [
vec3(-0.5f, -0.5f, 0.0f),
vec3(0.5f, -0.5f, 0.0f),
vec3(0.0f, 0.5f, 0.0f)
];
shared StandardBuffer vbo = new shared StandardBuffer(vertices);
shared VertexArray vao = new shared VertexArray(vbo);
vao.bindAttribute(program, "position", vbo, glwrap.AttribPointerType.Float, 3);
program.use();
vao.bind();
gl.glClearColor(0.4f, 0.4f, 0.4f, 1f);
while (window.isOpen) {
if (!window.whileOpenEvent()) return;
glwrap.glClear(true, true);
glwrap.glDrawArrays(glwrap.Primitives.Triangles, 0, 3);
window.redraw();
Thread.sleep(dur!"msecs"(75));
}
}This uses OpenGL shaders that should run on any machine built in the last three years (atleast). This does not show the shader loader however that is not required in this context.