#include <stdio.h>
#include <stdlib.h>
#include <X11/Xlib.h>
#include <GL/glx.h>
#include <GL/gl.h>
#include <GL/glext.h>
GLXContext glXCreateContextAttribsARB(Display*, GLXFBConfig, GLXContext, Bool, const int*);
int main(int argc, char **argv)
{
int visual_attr[] = { GLX_RGBA,
GLX_DOUBLEBUFFER,
GLX_RED_SIZE, 8,
GLX_GREEN_SIZE, 8,
GLX_BLUE_SIZE, 8,
GLX_DEPTH_SIZE, 16,
0 };
int version_attr[] = { GLX_CONTEXT_MAJOR_VERSION_ARB, 3,
GLX_CONTEXT_MINOR_VERSION_ARB, 3, 0};
int nitems;
Display* display = NULL;
Window window;
XVisualInfo* vi = NULL;
GLXContext rc = 0;
GLXContext newrc = 0;
GLXFBConfig* fbconfig = NULL;
display = XOpenDisplay(NULL);
window = XRootWindow(display, 0);
fbconfig = glXChooseFBConfig(display, DefaultScreen(display), 0, &nitems);
vi = glXChooseVisual(display,DefaultScreen(display),visual_attr);
rc = glXCreateContext(display, vi, 0, GL_TRUE);
glXMakeCurrent(display, window, rc);
newrc = glXCreateContextAttribsARB(display, *fbconfig, 0, 1, version_attr);
if(newrc)
glXDestroyContext(display, rc);
XCloseDisplay(display);
return EXIT_SUCCESS;
}
2012年9月19日 星期三
精簡版 OpenGL 3.x/4.x+ 初始化
以下的程式碼會用 root window 建立一個 legacy render context,然後再呼叫 glXCreateContextAttribsARB 建立指定版本的 render context。
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言