Moved platform specific opengl extension flags into the platform specific files
This commit is contained in:
parent
412dfc7462
commit
2d5c4cf934
|
@ -49,10 +49,6 @@ THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef _MACOSX
|
|
||||||
struct ExtensionTypes extgl_Extensions;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
HMODULE lib_gl_handle = NULL;
|
HMODULE lib_gl_handle = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -158,35 +158,6 @@ typedef unsigned short GLhalf;
|
||||||
|
|
||||||
/* helper stuff */
|
/* helper stuff */
|
||||||
|
|
||||||
#ifndef _MACOSX
|
|
||||||
struct ExtensionTypes
|
|
||||||
{
|
|
||||||
#ifdef _WIN32 /* WGL extensions */
|
|
||||||
bool WGL_ARB_buffer_region;
|
|
||||||
bool WGL_ARB_extensions_string;
|
|
||||||
bool WGL_ARB_make_current_read;
|
|
||||||
bool WGL_ARB_multisample;
|
|
||||||
bool WGL_ARB_pbuffer;
|
|
||||||
bool WGL_ARB_pixel_format;
|
|
||||||
bool WGL_ARB_render_texture;
|
|
||||||
bool WGL_EXT_extensions_string;
|
|
||||||
bool WGL_EXT_swap_control;
|
|
||||||
bool WGL_NV_render_depth_texture;
|
|
||||||
bool WGL_NV_render_texture_rectangle;
|
|
||||||
#endif /* WIN32 */
|
|
||||||
#ifdef _X11
|
|
||||||
bool GLX12;
|
|
||||||
bool GLX13;
|
|
||||||
bool GLX_EXT_visual_info;
|
|
||||||
bool GLX_EXT_visual_rating;
|
|
||||||
bool GLX_SGI_swap_control;
|
|
||||||
bool GLX_ARB_multisample;
|
|
||||||
#endif /* X11 */
|
|
||||||
};
|
|
||||||
|
|
||||||
extern struct ExtensionTypes extgl_Extensions;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* initializes everything, call this right after the rc is created. the function returns true if successful */
|
/* initializes everything, call this right after the rc is created. the function returns true if successful */
|
||||||
extern bool extgl_Open(JNIEnv *env);
|
extern bool extgl_Open(JNIEnv *env);
|
||||||
extern void extgl_Close(void);
|
extern void extgl_Close(void);
|
||||||
|
|
|
@ -31,6 +31,8 @@
|
||||||
*/
|
*/
|
||||||
#include "extgl_glx.h"
|
#include "extgl_glx.h"
|
||||||
|
|
||||||
|
GLXExtensions extension_flags;
|
||||||
|
|
||||||
glXGetFBConfigsPROC glXGetFBConfigs = NULL;
|
glXGetFBConfigsPROC glXGetFBConfigs = NULL;
|
||||||
glXChooseFBConfigPROC glXChooseFBConfig = NULL;
|
glXChooseFBConfigPROC glXChooseFBConfig = NULL;
|
||||||
glXGetFBConfigAttribPROC glXGetFBConfigAttrib = NULL;
|
glXGetFBConfigAttribPROC glXGetFBConfigAttrib = NULL;
|
||||||
|
@ -101,8 +103,8 @@ static void extgl_InitGLX13(JNIEnv *env)
|
||||||
{"glXQueryContext", (void*)&glXQueryContext},
|
{"glXQueryContext", (void*)&glXQueryContext},
|
||||||
{"glXSelectEvent", (void*)&glXSelectEvent},
|
{"glXSelectEvent", (void*)&glXSelectEvent},
|
||||||
{"glXGetSelectedEvent", (void*)&glXGetSelectedEvent}};
|
{"glXGetSelectedEvent", (void*)&glXGetSelectedEvent}};
|
||||||
if (extgl_Extensions.GLX13)
|
if (extension_flags.GLX13)
|
||||||
extgl_Extensions.GLX13 = extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
extension_flags.GLX13 = extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool extgl_InitGLX12(void)
|
static bool extgl_InitGLX12(void)
|
||||||
|
@ -133,32 +135,32 @@ static bool extgl_InitGLX12(void)
|
||||||
|
|
||||||
static void extgl_InitGLXSupportedExtensions(JNIEnv *env, Display *disp, int screen)
|
static void extgl_InitGLXSupportedExtensions(JNIEnv *env, Display *disp, int screen)
|
||||||
{
|
{
|
||||||
extgl_Extensions.GLX_EXT_visual_info = GLXQueryExtension(env, disp, screen, "GLX_EXT_visual_info");
|
extension_flags.GLX_EXT_visual_info = GLXQueryExtension(env, disp, screen, "GLX_EXT_visual_info");
|
||||||
extgl_Extensions.GLX_EXT_visual_rating = GLXQueryExtension(env, disp, screen, "GLX_EXT_visual_rating");
|
extension_flags.GLX_EXT_visual_rating = GLXQueryExtension(env, disp, screen, "GLX_EXT_visual_rating");
|
||||||
extgl_Extensions.GLX_SGI_swap_control = GLXQueryExtension(env, disp, screen, "GLX_SGI_swap_control");
|
extension_flags.GLX_SGI_swap_control = GLXQueryExtension(env, disp, screen, "GLX_SGI_swap_control");
|
||||||
extgl_Extensions.GLX_ARB_multisample = GLXQueryExtension(env, disp, screen, "GLX_ARB_multisample");
|
extension_flags.GLX_ARB_multisample = GLXQueryExtension(env, disp, screen, "GLX_ARB_multisample");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void extgl_InitGLXSGISwapControl(JNIEnv *env)
|
static void extgl_InitGLXSGISwapControl(JNIEnv *env)
|
||||||
{
|
{
|
||||||
ExtFunction functions[] = {
|
ExtFunction functions[] = {
|
||||||
{"glXSwapIntervalSGI", (void*)&glXSwapIntervalSGI}};
|
{"glXSwapIntervalSGI", (void*)&glXSwapIntervalSGI}};
|
||||||
if (extgl_Extensions.GLX_SGI_swap_control)
|
if (extension_flags.GLX_SGI_swap_control)
|
||||||
extgl_Extensions.GLX_SGI_swap_control = extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
extension_flags.GLX_SGI_swap_control = extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool extgl_InitGLX(JNIEnv *env, Display *disp, int screen)
|
bool extgl_InitGLX(JNIEnv *env, Display *disp, int screen)
|
||||||
{
|
{
|
||||||
int major, minor;
|
int major, minor;
|
||||||
/* Assume glx ver >= 1.2 */
|
/* Assume glx ver >= 1.2 */
|
||||||
extgl_Extensions.GLX12 = true;
|
extension_flags.GLX12 = true;
|
||||||
if (!extgl_InitGLX12())
|
if (!extgl_InitGLX12())
|
||||||
return false;
|
return false;
|
||||||
extgl_InitGLXSupportedExtensions(env, disp, screen);
|
extgl_InitGLXSupportedExtensions(env, disp, screen);
|
||||||
if (glXQueryVersion(disp, &major, &minor) != True)
|
if (glXQueryVersion(disp, &major, &minor) != True)
|
||||||
return false;
|
return false;
|
||||||
if (major > 1 || (major == 1 && minor >= 3))
|
if (major > 1 || (major == 1 && minor >= 3))
|
||||||
extgl_Extensions.GLX13 = true;
|
extension_flags.GLX13 = true;
|
||||||
extgl_InitGLX13(env);
|
extgl_InitGLX13(env);
|
||||||
extgl_InitGLXSGISwapControl(env);
|
extgl_InitGLXSGISwapControl(env);
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -312,6 +312,17 @@ typedef const char * (APIENTRY * glXQueryExtensionsStringPROC) (Display *dpy, in
|
||||||
/* GLX_SGI_swap_control */
|
/* GLX_SGI_swap_control */
|
||||||
typedef void (APIENTRY * glXSwapIntervalSGIPROC)(int interval);
|
typedef void (APIENTRY * glXSwapIntervalSGIPROC)(int interval);
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
bool GLX12;
|
||||||
|
bool GLX13;
|
||||||
|
bool GLX_EXT_visual_info;
|
||||||
|
bool GLX_EXT_visual_rating;
|
||||||
|
bool GLX_SGI_swap_control;
|
||||||
|
bool GLX_ARB_multisample;
|
||||||
|
} GLXExtensions;
|
||||||
|
|
||||||
|
extern GLXExtensions extension_flags;
|
||||||
|
|
||||||
extern glXGetFBConfigsPROC glXGetFBConfigs;
|
extern glXGetFBConfigsPROC glXGetFBConfigs;
|
||||||
extern glXChooseFBConfigPROC glXChooseFBConfig;
|
extern glXChooseFBConfigPROC glXChooseFBConfig;
|
||||||
extern glXGetFBConfigAttribPROC glXGetFBConfigAttrib;
|
extern glXGetFBConfigAttribPROC glXGetFBConfigAttrib;
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
#include "display.h"
|
#include "display.h"
|
||||||
#include "org_lwjgl_opengl_LinuxDisplay.h"
|
#include "org_lwjgl_opengl_LinuxDisplay.h"
|
||||||
|
|
||||||
#define USEGLX13 extgl_Extensions.GLX13
|
#define USEGLX13 extension_flags.GLX13
|
||||||
#define ERR_MSG_SIZE 1024
|
#define ERR_MSG_SIZE 1024
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -511,7 +511,7 @@ static GLXFBConfig *chooseVisualGLX13FromBPP(JNIEnv *env, jobject pixel_format,
|
||||||
putAttrib(&attrib_list, GLX_ACCUM_BLUE_SIZE); putAttrib(&attrib_list, accum_bpe);
|
putAttrib(&attrib_list, GLX_ACCUM_BLUE_SIZE); putAttrib(&attrib_list, accum_bpe);
|
||||||
putAttrib(&attrib_list, GLX_ACCUM_ALPHA_SIZE); putAttrib(&attrib_list, accum_alpha);
|
putAttrib(&attrib_list, GLX_ACCUM_ALPHA_SIZE); putAttrib(&attrib_list, accum_alpha);
|
||||||
putAttrib(&attrib_list, GLX_STEREO); putAttrib(&attrib_list, stereo ? True : False);
|
putAttrib(&attrib_list, GLX_STEREO); putAttrib(&attrib_list, stereo ? True : False);
|
||||||
if (samples > 0 && extgl_Extensions.GLX_ARB_multisample) {
|
if (samples > 0 && extension_flags.GLX_ARB_multisample) {
|
||||||
putAttrib(&attrib_list, GLX_SAMPLE_BUFFERS_ARB); putAttrib(&attrib_list, 1);
|
putAttrib(&attrib_list, GLX_SAMPLE_BUFFERS_ARB); putAttrib(&attrib_list, 1);
|
||||||
putAttrib(&attrib_list, GLX_SAMPLES_ARB); putAttrib(&attrib_list, samples);
|
putAttrib(&attrib_list, GLX_SAMPLES_ARB); putAttrib(&attrib_list, samples);
|
||||||
}
|
}
|
||||||
|
@ -573,7 +573,7 @@ static XVisualInfo *chooseVisualGLX(JNIEnv *env, jobject pixel_format) {
|
||||||
putAttrib(&attrib_list, GLX_ACCUM_ALPHA_SIZE); putAttrib(&attrib_list, accum_alpha);
|
putAttrib(&attrib_list, GLX_ACCUM_ALPHA_SIZE); putAttrib(&attrib_list, accum_alpha);
|
||||||
if (stereo)
|
if (stereo)
|
||||||
putAttrib(&attrib_list, GLX_STEREO);
|
putAttrib(&attrib_list, GLX_STEREO);
|
||||||
if (samples > 0 && extgl_Extensions.GLX_ARB_multisample) {
|
if (samples > 0 && extension_flags.GLX_ARB_multisample) {
|
||||||
putAttrib(&attrib_list, GLX_SAMPLE_BUFFERS_ARB); putAttrib(&attrib_list, 1);
|
putAttrib(&attrib_list, GLX_SAMPLE_BUFFERS_ARB); putAttrib(&attrib_list, 1);
|
||||||
putAttrib(&attrib_list, GLX_SAMPLES_ARB); putAttrib(&attrib_list, samples);
|
putAttrib(&attrib_list, GLX_SAMPLES_ARB); putAttrib(&attrib_list, samples);
|
||||||
}
|
}
|
||||||
|
@ -591,7 +591,7 @@ static void dumpVisualInfo(JNIEnv *env, XVisualInfo *vis_info) {
|
||||||
glXGetConfig(getDisplay(), vis_info, GLX_ALPHA_SIZE, &alpha);
|
glXGetConfig(getDisplay(), vis_info, GLX_ALPHA_SIZE, &alpha);
|
||||||
glXGetConfig(getDisplay(), vis_info, GLX_DEPTH_SIZE, &depth);
|
glXGetConfig(getDisplay(), vis_info, GLX_DEPTH_SIZE, &depth);
|
||||||
glXGetConfig(getDisplay(), vis_info, GLX_STENCIL_SIZE, &stencil);
|
glXGetConfig(getDisplay(), vis_info, GLX_STENCIL_SIZE, &stencil);
|
||||||
if (extgl_Extensions.GLX_ARB_multisample) {
|
if (extension_flags.GLX_ARB_multisample) {
|
||||||
glXGetConfig(getDisplay(), vis_info, GLX_SAMPLE_BUFFERS_ARB, &sample_buffers);
|
glXGetConfig(getDisplay(), vis_info, GLX_SAMPLE_BUFFERS_ARB, &sample_buffers);
|
||||||
glXGetConfig(getDisplay(), vis_info, GLX_SAMPLES_ARB, &samples);
|
glXGetConfig(getDisplay(), vis_info, GLX_SAMPLES_ARB, &samples);
|
||||||
}
|
}
|
||||||
|
@ -793,7 +793,7 @@ JNIEXPORT jboolean JNICALL Java_org_lwjgl_opengl_LinuxDisplay_nIsActive
|
||||||
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_LinuxDisplay_nSetVSyncEnabled
|
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_LinuxDisplay_nSetVSyncEnabled
|
||||||
(JNIEnv *env, jobject this, jboolean sync)
|
(JNIEnv *env, jobject this, jboolean sync)
|
||||||
{
|
{
|
||||||
if (extgl_Extensions.GLX_SGI_swap_control) {
|
if (extension_flags.GLX_SGI_swap_control) {
|
||||||
bool vsync = sync == JNI_TRUE ? true : false;
|
bool vsync = sync == JNI_TRUE ? true : false;
|
||||||
if (vsync != vsync_enabled) {
|
if (vsync != vsync_enabled) {
|
||||||
int interval = vsync ? 1 : 0;
|
int interval = vsync ? 1 : 0;
|
||||||
|
|
|
@ -53,7 +53,7 @@ typedef struct _PbufferInfo {
|
||||||
|
|
||||||
static bool isPbuffersSupported() {
|
static bool isPbuffersSupported() {
|
||||||
// Only support the GLX 1.3 Pbuffers and ignore the GLX_SGIX_pbuffer extension
|
// Only support the GLX 1.3 Pbuffers and ignore the GLX_SGIX_pbuffer extension
|
||||||
return extgl_Extensions.GLX13 ? org_lwjgl_opengl_Pbuffer_PBUFFER_SUPPORTED : 0;
|
return extension_flags.GLX13 ? org_lwjgl_opengl_Pbuffer_PBUFFER_SUPPORTED : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_LinuxDisplay_nGetPbufferCapabilities
|
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_LinuxDisplay_nGetPbufferCapabilities
|
||||||
|
|
|
@ -39,6 +39,8 @@ THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "extgl_wgl.h"
|
#include "extgl_wgl.h"
|
||||||
#include "common_tools.h"
|
#include "common_tools.h"
|
||||||
|
|
||||||
|
WGLExtensions extension_flags;
|
||||||
|
|
||||||
/* WGL_EXT_etxension_string */
|
/* WGL_EXT_etxension_string */
|
||||||
|
|
||||||
wglGetExtensionsStringEXTPROC wglGetExtensionsStringEXT = NULL;
|
wglGetExtensionsStringEXTPROC wglGetExtensionsStringEXT = NULL;
|
||||||
|
@ -100,8 +102,8 @@ static void extgl_InitWGLARBPbuffer(JNIEnv *env)
|
||||||
{"wglReleasePbufferDCARB", (void **)&wglReleasePbufferDCARB},
|
{"wglReleasePbufferDCARB", (void **)&wglReleasePbufferDCARB},
|
||||||
{"wglDestroyPbufferARB", (void **)&wglDestroyPbufferARB},
|
{"wglDestroyPbufferARB", (void **)&wglDestroyPbufferARB},
|
||||||
{"wglQueryPbufferARB", (void **)&wglQueryPbufferARB}};
|
{"wglQueryPbufferARB", (void **)&wglQueryPbufferARB}};
|
||||||
if (extgl_Extensions.WGL_ARB_pbuffer)
|
if (extension_flags.WGL_ARB_pbuffer)
|
||||||
extgl_Extensions.WGL_ARB_pbuffer = extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
extension_flags.WGL_ARB_pbuffer = extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void extgl_InitWGLARBPixelFormat(JNIEnv *env)
|
static void extgl_InitWGLARBPixelFormat(JNIEnv *env)
|
||||||
|
@ -110,8 +112,8 @@ static void extgl_InitWGLARBPixelFormat(JNIEnv *env)
|
||||||
{"wglGetPixelFormatAttribivARB", (void **)&wglGetPixelFormatAttribivARB},
|
{"wglGetPixelFormatAttribivARB", (void **)&wglGetPixelFormatAttribivARB},
|
||||||
{"wglGetPixelFormatAttribfvARB", (void **)&wglGetPixelFormatAttribfvARB},
|
{"wglGetPixelFormatAttribfvARB", (void **)&wglGetPixelFormatAttribfvARB},
|
||||||
{"wglChoosePixelFormatARB", (void **)&wglChoosePixelFormatARB}};
|
{"wglChoosePixelFormatARB", (void **)&wglChoosePixelFormatARB}};
|
||||||
if (extgl_Extensions.WGL_ARB_pixel_format)
|
if (extension_flags.WGL_ARB_pixel_format)
|
||||||
extgl_Extensions.WGL_ARB_pixel_format = extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
extension_flags.WGL_ARB_pixel_format = extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void extgl_InitWGLARBRenderTexture(JNIEnv *env)
|
static void extgl_InitWGLARBRenderTexture(JNIEnv *env)
|
||||||
|
@ -120,8 +122,8 @@ static void extgl_InitWGLARBRenderTexture(JNIEnv *env)
|
||||||
{"wglBindTexImageARB", (void **)&wglBindTexImageARB},
|
{"wglBindTexImageARB", (void **)&wglBindTexImageARB},
|
||||||
{"wglReleaseTexImageARB", (void **)&wglReleaseTexImageARB},
|
{"wglReleaseTexImageARB", (void **)&wglReleaseTexImageARB},
|
||||||
{"wglSetPbufferAttribARB", (void **)&wglSetPbufferAttribARB}};
|
{"wglSetPbufferAttribARB", (void **)&wglSetPbufferAttribARB}};
|
||||||
if (extgl_Extensions.WGL_ARB_render_texture)
|
if (extension_flags.WGL_ARB_render_texture)
|
||||||
extgl_Extensions.WGL_ARB_render_texture = extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
extension_flags.WGL_ARB_render_texture = extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void extgl_InitWGLEXTSwapControl(JNIEnv *env)
|
static void extgl_InitWGLEXTSwapControl(JNIEnv *env)
|
||||||
|
@ -129,8 +131,8 @@ static void extgl_InitWGLEXTSwapControl(JNIEnv *env)
|
||||||
ExtFunction functions[] = {
|
ExtFunction functions[] = {
|
||||||
{"wglSwapIntervalEXT", (void **)&wglSwapIntervalEXT},
|
{"wglSwapIntervalEXT", (void **)&wglSwapIntervalEXT},
|
||||||
{"wglGetSwapIntervalEXT", (void **)&wglGetSwapIntervalEXT}};
|
{"wglGetSwapIntervalEXT", (void **)&wglGetSwapIntervalEXT}};
|
||||||
if (extgl_Extensions.WGL_EXT_swap_control)
|
if (extension_flags.WGL_EXT_swap_control)
|
||||||
extgl_Extensions.WGL_EXT_swap_control = extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
extension_flags.WGL_EXT_swap_control = extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void extgl_InitWGLARBMakeCurrentRead(JNIEnv *env)
|
static void extgl_InitWGLARBMakeCurrentRead(JNIEnv *env)
|
||||||
|
@ -138,21 +140,21 @@ static void extgl_InitWGLARBMakeCurrentRead(JNIEnv *env)
|
||||||
ExtFunction functions[] = {
|
ExtFunction functions[] = {
|
||||||
{"wglMakeContextCurrentARB", (void **)&wglMakeContextCurrentARB},
|
{"wglMakeContextCurrentARB", (void **)&wglMakeContextCurrentARB},
|
||||||
{"wglGetCurrentReadDCARB", (void **)&wglGetCurrentReadDCARB}};
|
{"wglGetCurrentReadDCARB", (void **)&wglGetCurrentReadDCARB}};
|
||||||
if (extgl_Extensions.WGL_ARB_make_current_read)
|
if (extension_flags.WGL_ARB_make_current_read)
|
||||||
extgl_Extensions.WGL_ARB_make_current_read = extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
extension_flags.WGL_ARB_make_current_read = extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void extgl_InitSupportedWGLExtensions(JNIEnv *env)
|
static void extgl_InitSupportedWGLExtensions(JNIEnv *env)
|
||||||
{
|
{
|
||||||
extgl_Extensions.WGL_ARB_buffer_region = WGLQueryExtension(env, "WGL_ARB_buffer_region");
|
extension_flags.WGL_ARB_buffer_region = WGLQueryExtension(env, "WGL_ARB_buffer_region");
|
||||||
extgl_Extensions.WGL_ARB_make_current_read = WGLQueryExtension(env, "WGL_ARB_make_current_read");
|
extension_flags.WGL_ARB_make_current_read = WGLQueryExtension(env, "WGL_ARB_make_current_read");
|
||||||
extgl_Extensions.WGL_ARB_multisample = WGLQueryExtension(env, "WGL_ARB_multisample");
|
extension_flags.WGL_ARB_multisample = WGLQueryExtension(env, "WGL_ARB_multisample");
|
||||||
extgl_Extensions.WGL_ARB_pbuffer = WGLQueryExtension(env, "WGL_ARB_pbuffer");
|
extension_flags.WGL_ARB_pbuffer = WGLQueryExtension(env, "WGL_ARB_pbuffer");
|
||||||
extgl_Extensions.WGL_ARB_pixel_format = WGLQueryExtension(env, "WGL_ARB_pixel_format");
|
extension_flags.WGL_ARB_pixel_format = WGLQueryExtension(env, "WGL_ARB_pixel_format");
|
||||||
extgl_Extensions.WGL_ARB_render_texture = WGLQueryExtension(env, "WGL_ARB_render_texture");
|
extension_flags.WGL_ARB_render_texture = WGLQueryExtension(env, "WGL_ARB_render_texture");
|
||||||
extgl_Extensions.WGL_EXT_swap_control = WGLQueryExtension(env, "WGL_EXT_swap_control");
|
extension_flags.WGL_EXT_swap_control = WGLQueryExtension(env, "WGL_EXT_swap_control");
|
||||||
extgl_Extensions.WGL_NV_render_depth_texture = WGLQueryExtension(env, "WGL_NV_render_depth_texture");
|
extension_flags.WGL_NV_render_depth_texture = WGLQueryExtension(env, "WGL_NV_render_depth_texture");
|
||||||
extgl_Extensions.WGL_NV_render_texture_rectangle = WGLQueryExtension(env, "WGL_NV_render_texture_rectangle");
|
extension_flags.WGL_NV_render_texture_rectangle = WGLQueryExtension(env, "WGL_NV_render_texture_rectangle");
|
||||||
}
|
}
|
||||||
|
|
||||||
void extgl_InitWGL(JNIEnv *env)
|
void extgl_InitWGL(JNIEnv *env)
|
||||||
|
@ -161,8 +163,8 @@ void extgl_InitWGL(JNIEnv *env)
|
||||||
{"wglGetExtensionsStringARB", (void **)&wglGetExtensionsStringARB},
|
{"wglGetExtensionsStringARB", (void **)&wglGetExtensionsStringARB},
|
||||||
{"wglGetExtensionsStringEXT", (void **)&wglGetExtensionsStringEXT}};
|
{"wglGetExtensionsStringEXT", (void **)&wglGetExtensionsStringEXT}};
|
||||||
extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
||||||
extgl_Extensions.WGL_ARB_extensions_string = wglGetExtensionsStringARB != NULL;
|
extension_flags.WGL_ARB_extensions_string = wglGetExtensionsStringARB != NULL;
|
||||||
extgl_Extensions.WGL_EXT_extensions_string = wglGetExtensionsStringEXT != NULL;
|
extension_flags.WGL_EXT_extensions_string = wglGetExtensionsStringEXT != NULL;
|
||||||
|
|
||||||
extgl_InitSupportedWGLExtensions(env);
|
extgl_InitSupportedWGLExtensions(env);
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,21 @@ THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
bool WGL_ARB_buffer_region;
|
||||||
|
bool WGL_ARB_extensions_string;
|
||||||
|
bool WGL_ARB_make_current_read;
|
||||||
|
bool WGL_ARB_multisample;
|
||||||
|
bool WGL_ARB_pbuffer;
|
||||||
|
bool WGL_ARB_pixel_format;
|
||||||
|
bool WGL_ARB_render_texture;
|
||||||
|
bool WGL_EXT_extensions_string;
|
||||||
|
bool WGL_EXT_swap_control;
|
||||||
|
bool WGL_NV_render_depth_texture;
|
||||||
|
bool WGL_NV_render_texture_rectangle;
|
||||||
|
} WGLExtensions;
|
||||||
|
|
||||||
|
extern WGLExtensions extension_flags;
|
||||||
|
|
||||||
extern void extgl_InitWGL(JNIEnv *env);
|
extern void extgl_InitWGL(JNIEnv *env);
|
||||||
|
|
||||||
|
|
|
@ -121,7 +121,7 @@ static int findPixelFormatARBFromBPP(JNIEnv *env, HDC hdc, jobject pixel_format,
|
||||||
putAttrib(&attrib_list, WGL_ALPHA_BITS_ARB); putAttrib(&attrib_list, alpha);
|
putAttrib(&attrib_list, WGL_ALPHA_BITS_ARB); putAttrib(&attrib_list, alpha);
|
||||||
putAttrib(&attrib_list, WGL_DEPTH_BITS_ARB); putAttrib(&attrib_list, depth);
|
putAttrib(&attrib_list, WGL_DEPTH_BITS_ARB); putAttrib(&attrib_list, depth);
|
||||||
putAttrib(&attrib_list, WGL_STENCIL_BITS_ARB); putAttrib(&attrib_list, stencil);
|
putAttrib(&attrib_list, WGL_STENCIL_BITS_ARB); putAttrib(&attrib_list, stencil);
|
||||||
if (samples > 0 && extgl_Extensions.WGL_ARB_multisample) {
|
if (samples > 0 && extension_flags.WGL_ARB_multisample) {
|
||||||
putAttrib(&attrib_list, WGL_SAMPLE_BUFFERS_ARB); putAttrib(&attrib_list, 1);
|
putAttrib(&attrib_list, WGL_SAMPLE_BUFFERS_ARB); putAttrib(&attrib_list, 1);
|
||||||
putAttrib(&attrib_list, WGL_SAMPLES_ARB); putAttrib(&attrib_list, samples);
|
putAttrib(&attrib_list, WGL_SAMPLES_ARB); putAttrib(&attrib_list, samples);
|
||||||
}
|
}
|
||||||
|
@ -130,7 +130,7 @@ static int findPixelFormatARBFromBPP(JNIEnv *env, HDC hdc, jobject pixel_format,
|
||||||
putAttrib(&attrib_list, WGL_STEREO_ARB); putAttrib(&attrib_list, stereo ? TRUE : FALSE);
|
putAttrib(&attrib_list, WGL_STEREO_ARB); putAttrib(&attrib_list, stereo ? TRUE : FALSE);
|
||||||
putAttrib(&attrib_list, WGL_AUX_BUFFERS_ARB); putAttrib(&attrib_list, num_aux_buffers);
|
putAttrib(&attrib_list, WGL_AUX_BUFFERS_ARB); putAttrib(&attrib_list, num_aux_buffers);
|
||||||
if ( pixelFormatCaps != NULL ) {
|
if ( pixelFormatCaps != NULL ) {
|
||||||
if ( !extgl_Extensions.WGL_ARB_render_texture ) {
|
if ( !extension_flags.WGL_ARB_render_texture ) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -620,7 +620,7 @@ JNIEXPORT jboolean JNICALL Java_org_lwjgl_opengl_Win32Display_isActive
|
||||||
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Win32Display_setVSyncEnabled
|
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Win32Display_setVSyncEnabled
|
||||||
(JNIEnv * env, jobject self, jboolean sync)
|
(JNIEnv * env, jobject self, jboolean sync)
|
||||||
{
|
{
|
||||||
if (extgl_Extensions.WGL_EXT_swap_control) {
|
if (extension_flags.WGL_EXT_swap_control) {
|
||||||
if (sync == JNI_TRUE) {
|
if (sync == JNI_TRUE) {
|
||||||
wglSwapIntervalEXT(1);
|
wglSwapIntervalEXT(1);
|
||||||
} else {
|
} else {
|
||||||
|
@ -714,7 +714,7 @@ bool createARBContextAndPixelFormat(JNIEnv *env, HDC hdc, jobject pixel_format,
|
||||||
// Some crazy strangeness here so we can use ARB_pixel_format to specify the number
|
// Some crazy strangeness here so we can use ARB_pixel_format to specify the number
|
||||||
// of multisamples we want. If the extension is present we'll delete the existing
|
// of multisamples we want. If the extension is present we'll delete the existing
|
||||||
// rendering context and start over, using the ARB extension instead to pick the context.
|
// rendering context and start over, using the ARB extension instead to pick the context.
|
||||||
if (!extgl_Extensions.WGL_ARB_pixel_format)
|
if (!extension_flags.WGL_ARB_pixel_format)
|
||||||
return false;
|
return false;
|
||||||
pixel_format_index = findPixelFormatARB(env, hdc, pixel_format, NULL, true, true, true, true);
|
pixel_format_index = findPixelFormatARB(env, hdc, pixel_format, NULL, true, true, true, true);
|
||||||
if (pixel_format_index == -1) {
|
if (pixel_format_index == -1) {
|
||||||
|
|
|
@ -56,7 +56,7 @@ typedef struct _PbufferInfo {
|
||||||
} PbufferInfo;
|
} PbufferInfo;
|
||||||
|
|
||||||
static bool isPbuffersSupported() {
|
static bool isPbuffersSupported() {
|
||||||
return extgl_Extensions.WGL_ARB_pixel_format && extgl_Extensions.WGL_ARB_pbuffer;
|
return extension_flags.WGL_ARB_pixel_format && extension_flags.WGL_ARB_pbuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_Win32Display_getPbufferCapabilities
|
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_Win32Display_getPbufferCapabilities
|
||||||
|
@ -66,13 +66,13 @@ JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_Win32Display_getPbufferCapabilities
|
||||||
if (isPbuffersSupported())
|
if (isPbuffersSupported())
|
||||||
caps |= org_lwjgl_opengl_Pbuffer_PBUFFER_SUPPORTED;
|
caps |= org_lwjgl_opengl_Pbuffer_PBUFFER_SUPPORTED;
|
||||||
|
|
||||||
if (extgl_Extensions.WGL_ARB_render_texture)
|
if (extension_flags.WGL_ARB_render_texture)
|
||||||
caps |= org_lwjgl_opengl_Pbuffer_RENDER_TEXTURE_SUPPORTED;
|
caps |= org_lwjgl_opengl_Pbuffer_RENDER_TEXTURE_SUPPORTED;
|
||||||
|
|
||||||
if (extgl_Extensions.WGL_NV_render_texture_rectangle)
|
if (extension_flags.WGL_NV_render_texture_rectangle)
|
||||||
caps |= org_lwjgl_opengl_Pbuffer_RENDER_TEXTURE_RECTANGLE_SUPPORTED;
|
caps |= org_lwjgl_opengl_Pbuffer_RENDER_TEXTURE_RECTANGLE_SUPPORTED;
|
||||||
|
|
||||||
if (extgl_Extensions.WGL_NV_render_depth_texture)
|
if (extension_flags.WGL_NV_render_depth_texture)
|
||||||
caps |= org_lwjgl_opengl_Pbuffer_RENDER_DEPTH_TEXTURE_SUPPORTED;
|
caps |= org_lwjgl_opengl_Pbuffer_RENDER_DEPTH_TEXTURE_SUPPORTED;
|
||||||
|
|
||||||
return caps;
|
return caps;
|
||||||
|
|
Loading…
Reference in New Issue