Created
June 18, 2014 22:50
-
-
Save SimonDanisch/408c0e0d3d00e6ee919f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <GLFW/glfw3.h> | |
#include <stdlib.h> | |
#include <stdio.h> | |
static void error_callback(int error, const char* description) | |
{ | |
fputs(description, stderr); | |
} | |
static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) | |
{ | |
if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) | |
glfwSetWindowShouldClose(window, GL_TRUE); | |
} | |
int main(void) | |
{ | |
GLFWwindow* window; | |
glfwSetErrorCallback(error_callback); | |
if (!glfwInit()) | |
exit(EXIT_FAILURE); | |
window = glfwCreateWindow(512, 512, "Simple example", NULL, NULL); | |
if (!window) | |
{ | |
glfwTerminate(); | |
exit(EXIT_FAILURE); | |
} | |
glfwMakeContextCurrent(window); | |
glfwSetKeyCallback(window, key_callback); | |
int width, height; | |
glfwGetFramebufferSize(window, &width, &height); | |
glEnable(GL_TEXTURE_2D); | |
int texture[1]; | |
glGenTextures(1, &texture[0]); | |
glBindTexture(GL_TEXTURE_2D, texture[0]); // 2d texture (x and y size) | |
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); // scale linearly when image bigger than texture | |
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); // scale linearly when image smalled than texture | |
// 2d texture, level of detail 0 (normal), 3 components (red, green, blue), x size from image, y size from image, | |
// border 0 (normal), rgb color data, unsigned byte data, and finally the data itself. | |
glTexImage2D(GL_TEXTURE_2D, 0, 3, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL); | |
while (!glfwWindowShouldClose(window)) | |
{ | |
float ratio; | |
ratio = width / (float) height; | |
glViewport(0, 0, width, height); | |
glClear(GL_COLOR_BUFFER_BIT); | |
glMatrixMode(GL_PROJECTION); | |
glLoadIdentity(); | |
glOrtho(-ratio, ratio, -1.f, 1.f, 1.f, -1.f); | |
glMatrixMode(GL_MODELVIEW); | |
glLoadIdentity(); | |
glRotatef(0.f, 0.f, 0.f, 1.f); | |
glBindTexture(GL_TEXTURE_2D, texture[0]); | |
glBegin(GL_QUADS); | |
glColor3f(1.f, 0.f, 0.f); | |
glVertex3f(-1.f, -1.f, 0.f); | |
glColor3f(0.f, 1.f, 0.f); | |
glVertex3f(-1.f, 1.f, 0.f); | |
glColor3f(0.f, 0.f, 1.f); | |
glVertex3f(1.f, 1.f, 0.f); | |
glColor3f(0.f, 0.f, 1.f); | |
glVertex3f(1.f, -1.f, 0.f); | |
glEnd(); | |
glfwSwapBuffers(window); | |
glfwPollEvents(); | |
} | |
glfwDestroyWindow(window); | |
glfwTerminate(); | |
exit(EXIT_SUCCESS); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment