Last active
August 29, 2015 14:23
-
-
Save hajimehoshi/885e8a0fc215d414c143 to your computer and use it in GitHub Desktop.
OpenGL: Fail on Windows on Paralells
This file contains 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