static VALUE Window_display(VALUE vSelf) { // Get C++ object pointer from vSelf Window *pSelf; Data_Get_Struct(vSelf, Window, pSelf); pSelf->Display(); return Qnil; }
void DisplayWindow(Window& w) { w.Display(); }
int main(int argc, char *argv[]) #endif { LOG_DEBUG("Opening window ..."); Window window = Window("Snowflake Sandbox", VideoMode(1280, 768)); Color clearColor = Color(50, 80, 80, 255); GLfloat vertexBufferData[] = { // Front face -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, // Back face -1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, -1.0, // Top face -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, // Bottom face -1.0, -1.0, -1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0, // Right face 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, // Left face -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0 }; GLfloat colorBufferData[] = { 0.583f, 0.771f, 0.014f, 0.609f, 0.115f, 0.436f, 0.327f, 0.483f, 0.844f, 0.822f, 0.569f, 0.201f, 0.435f, 0.602f, 0.223f, 0.310f, 0.747f, 0.185f, 0.597f, 0.770f, 0.761f, 0.559f, 0.436f, 0.730f, 0.359f, 0.583f, 0.152f, 0.483f, 0.596f, 0.789f, 0.559f, 0.861f, 0.639f, 0.195f, 0.548f, 0.859f, 0.014f, 0.184f, 0.576f, 0.771f, 0.328f, 0.970f, 0.406f, 0.615f, 0.116f, 0.676f, 0.977f, 0.133f, 0.971f, 0.572f, 0.833f, 0.140f, 0.616f, 0.489f, 0.997f, 0.513f, 0.064f, 0.945f, 0.719f, 0.592f, 0.543f, 0.021f, 0.978f, 0.279f, 0.317f, 0.505f, 0.167f, 0.620f, 0.077f, 0.347f, 0.857f, 0.137f, 0.055f, 0.953f, 0.042f, 0.714f, 0.505f, 0.345f, 0.783f, 0.290f, 0.734f, 0.722f, 0.645f, 0.174f, 0.302f, 0.455f, 0.848f, 0.225f, 0.587f, 0.040f, 0.517f, 0.713f, 0.338f, 0.053f, 0.959f, 0.120f, 0.393f, 0.621f, 0.362f, 0.673f, 0.211f, 0.457f, 0.820f, 0.883f, 0.371f, 0.982f, 0.099f, 0.879f }; GLushort indicesData[] = { 0, 1, 2, 0, 2, 3, // front 4, 5, 6, 4, 6, 7, // back 8, 9, 10, 8, 10, 11, // top 12, 13, 14, 12, 14, 15, // bottom 16, 17, 18, 16, 18, 19, // right 20, 21, 22, 20, 22, 23 // left }; VertexArray cube, cube2; IndexBuffer ibo(indicesData, std::end(indicesData) - std::begin(indicesData)); cube.AddBuffer(sfnew Buffer(vertexBufferData, sizeof(vertexBufferData), 3), 0); cube.AddBuffer(sfnew Buffer(colorBufferData, sizeof(colorBufferData), 3), 1); cube2.AddBuffer(sfnew Buffer(vertexBufferData, sizeof(vertexBufferData), 3), 0); cube2.AddBuffer(sfnew Buffer(colorBufferData, sizeof(colorBufferData), 3), 1); Matrix4 projection = Matrix4::Perspective(100.0f, window.GetSize().X / window.GetSize().Y, 0.1f, 100.f); Matrix4 view = Matrix4::LookAt(Vector3(4, 3, 3), Vector3(0, 0, 0), Vector3(0, 0.8f, 0)); Matrix4 model = Matrix4(1.0f); Matrix4 mvp = projection * view * model; Shader shader = Shader("tri_vertex.glsl", "tri_fragment.glsl"); shader.Enable(); while (!window.ShouldClose()) { window.Clear(clearColor); // Render here cube.Bind(); ibo.Bind(); model = Matrix4::Translation(Vector3(0, 0, 0)); mvp = projection * view * model; shader.SetUniformMat4("MVP", mvp); glDrawElements(GL_TRIANGLES, ibo.GetCount(), GL_UNSIGNED_SHORT, 0); ibo.Bind(); cube.Unbind(); cube2.Bind(); ibo.Bind(); model = Matrix4::Translation(Vector3(4, 0, 0)); mvp = projection * view * model; shader.SetUniformMat4("MVP", mvp); glDrawElements(GL_TRIANGLES, ibo.GetCount(), GL_UNSIGNED_SHORT, 0); ibo.Bind(); cube2.Unbind(); window.Display(); window.Update(); } window.Close(); #if _DEBUG LOG_DEBUG("PAUSING NOW!"); system("PAUSE"); #endif return EXIT_SUCCESS; }