Created
February 21, 2016 06:30
-
-
Save hajimehoshi/91be750d76f49ed8ed7f 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 <assert.h> | |
#include <stdio.h> | |
#include <GL/gl.h> | |
#include <GL/glext.h> | |
#include "GLFW/glfw3.h" | |
PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT; | |
PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT; | |
PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT; | |
PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT; | |
PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT; | |
PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT; | |
PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT; | |
PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT; | |
int main() { | |
if (!glfwInit()) { | |
assert(0); | |
} | |
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2); | |
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1); | |
GLFWwindow* window = glfwCreateWindow(100, 100, "Foo", NULL, NULL); | |
glfwMakeContextCurrent(window); | |
int t; | |
glGenTextures(1, &t); | |
glPixelStorei(GL_UNPACK_ALIGNMENT, 4); | |
glBindTexture(GL_TEXTURE_2D, t); | |
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 100, 100, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); | |
glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC)wglGetProcAddress("glGenFramebuffersEXT"); | |
glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC)wglGetProcAddress("glBindFramebufferEXT"); | |
glFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)wglGetProcAddress("glFramebufferTexture2DEXT"); | |
glGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC)wglGetProcAddress("glGenRenderbuffersEXT"); | |
glBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC)wglGetProcAddress("glBindRenderbufferEXT"); | |
glRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC)wglGetProcAddress("glRenderbufferStorageEXT"); | |
glFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)wglGetProcAddress("glFramebufferRenderbufferEXT"); | |
glCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)wglGetProcAddress("glCheckFramebufferStatusEXT"); | |
int f; | |
glGenFramebuffersEXT(1, &f); | |
glBindFramebufferEXT(GL_FRAMEBUFFER, f); | |
glFramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, t, 0); | |
if (glCheckFramebufferStatusEXT(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) { | |
assert(0); | |
} | |
{ | |
int err = glGetError(); | |
if (err != GL_NO_ERROR) { | |
char msg[1024]; | |
sprintf(msg, "before resizing: %d\n", err); | |
MessageBox(NULL, msg, "test", 0); | |
assert(0); | |
} | |
} | |
glBindFramebufferEXT(GL_FRAMEBUFFER, 0); | |
glfwSetWindowSize(window, 120, 120); | |
{ | |
int err = glGetError(); | |
if (err != GL_NO_ERROR) { | |
char msg[1024]; | |
sprintf(msg, "after resizing: %d\n", err); | |
MessageBox(NULL, msg, "test", 0); | |
assert(0); | |
} | |
} | |
while (!glfwWindowShouldClose(window)) { | |
glfwSwapBuffers(window); | |
glfwPollEvents(); | |
} | |
glfwTerminate(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment