From a232c6fbfbea0c31f18363f9d2842396e75dfe00 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Sat, 23 Aug 2003 11:34:14 +0000 Subject: [PATCH] ATI_separate_stencil support added --- src/java/org/lwjgl/opengl/GL.java | 4 ++++ src/native/common/extgl.c | 19 +++++++++++++++++ src/native/common/extgl.h | 21 ++++++++++++++++++ src/native/common/org_lwjgl_opengl_GL.cpp | 26 +++++++++++++++++++++++ src/native/common/org_lwjgl_opengl_GL.h | 16 ++++++++++++++ 5 files changed, 86 insertions(+) diff --git a/src/java/org/lwjgl/opengl/GL.java b/src/java/org/lwjgl/opengl/GL.java index 61c60aab..92abf76c 100644 --- a/src/java/org/lwjgl/opengl/GL.java +++ b/src/java/org/lwjgl/opengl/GL.java @@ -813,6 +813,10 @@ public abstract class GL extends CoreGL14 implements GLConstants { public static native void glPNTrianglesiATI(int pname, int param); + public static native void glStencilOpSeparateATI(int face, int sfail, int dpfail, int dppass); + + public static native void glStencilFuncSeparateATI(int frontfunc, int backfunc, int ref, int mask); + public static native void glPointParameterfARB(int pname, float param); public static native void glPointParameterfEXT(int pname, float param); diff --git a/src/native/common/extgl.c b/src/native/common/extgl.c index aac5ec07..eca6838f 100644 --- a/src/native/common/extgl.c +++ b/src/native/common/extgl.c @@ -936,6 +936,13 @@ glGetMapAttribParameterfvNVPROC glGetMapAttribParameterfvNV = NULL; glEvalMapsNVPROC glEvalMapsNV = NULL; #endif /* GL_NV_evaluators */ +/* ATI_separate_stencil */ + +#ifdef GL_ATI_separate_stencil +glStencilOpSeparateATIPROC glStencilOpSeparateATI = NULL; +glStencilFuncSeparateATIPROC glStencilFuncSeparateATI = NULL; +#endif /* GL_ATI_separate_stencil */ + /* ATI_pn_triangles */ #ifdef GL_ATI_pn_triangles @@ -2094,6 +2101,16 @@ void extgl_InitATIPNTriangles() #endif } +void extgl_InitATISeparateStencil() +{ +#ifdef GL_ATI_separate_stencil + if (!extgl_Extensions.ATI_separate_stencil) + return; + glStencilOpSeparateATI = (glStencilOpSeparateATIPROC)extgl_GetProcAddress("glStencilOpSeparateATI"); + glStencilFuncSeparateATI = (glStencilFuncSeparateATIPROC)extgl_GetProcAddress("glStencilFuncSeparateATI"); +#endif +} + void extgl_InitNVEvaluators() { #ifdef GL_NV_evaluators @@ -3163,6 +3180,7 @@ void extgl_InitSupportedExtensions() extgl_Extensions.ATI_fragment_shader = GLQueryExtension("GL_ATI_fragment_shader"); extgl_Extensions.ATI_pn_triangles = GLQueryExtension("GL_ATI_pn_triangles"); extgl_Extensions.ATI_point_cull_mode = GLQueryExtension("GL_ATI_point_cull_mode"); + extgl_Extensions.ATI_separate_stencil = GLQueryExtension("GL_ATI_separate_stencil"); extgl_Extensions.ATI_text_fragment_shader = GLQueryExtension("GL_ATI_text_fragment_shader"); extgl_Extensions.ATI_texture_mirror_once = GLQueryExtension("GL_ATI_texture_mirror_once"); extgl_Extensions.ATI_vertex_array_object = GLQueryExtension("GL_ATI_vertex_array_object"); @@ -3228,6 +3246,7 @@ int extgl_Initialize() extgl_InitNVFence(); extgl_InitNVRegisterCombiners2(); extgl_InitATIPNTriangles(); + extgl_InitATISeparateStencil(); extgl_InitARBPointParameters(); extgl_InitARBVertexBlend(); extgl_InitEXTMultiDrawArrays(); diff --git a/src/native/common/extgl.h b/src/native/common/extgl.h index 5e88007e..d6ceb524 100644 --- a/src/native/common/extgl.h +++ b/src/native/common/extgl.h @@ -5443,6 +5443,26 @@ extern glPrimitiveRestartIndexNVPROC glPrimitiveRestartIndexNV; #endif /* GL_ARB_fragment_program */ +/*-------------------------------------------------------------------*/ +/*------------ATI_separate_stencil---------------------------------------*/ +/*-------------------------------------------------------------------*/ + +#ifndef GL_ATI_separate_stencil +#define GL_ATI_separate_stencil 1 + +#define GL_STENCIL_BACK_FUNC_ATI 0x8800 +#define GL_STENCIL_BACK_FAIL_ATI 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 + +typedef void (APIENTRY * glStencilOpSeparateATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (APIENTRY * glStencilFuncSeparateATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); + +extern glStencilOpSeparateATIPROC glStencilOpSeparateATI; +extern glStencilFuncSeparateATIPROC glStencilFuncSeparateATI; + +#endif /* GL_ATI_separate_stencil */ + /*-------------------------------------------------------------------*/ /*------------GL_ATI_TEXT_FRAGMENT_SHADER----------------------------*/ /*-------------------------------------------------------------------*/ @@ -5883,6 +5903,7 @@ struct ExtensionTypes int ATI_fragment_shader; int ATI_pn_triangles; int ATI_point_cull_mode; + int ATI_separate_stencil; int ATI_text_fragment_shader; int ATI_texture_mirror_once; int ATI_vertex_array_object; diff --git a/src/native/common/org_lwjgl_opengl_GL.cpp b/src/native/common/org_lwjgl_opengl_GL.cpp index c2e154e7..a61aa59a 100644 --- a/src/native/common/org_lwjgl_opengl_GL.cpp +++ b/src/native/common/org_lwjgl_opengl_GL.cpp @@ -1910,6 +1910,32 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL_glPNTrianglesiATI(JNIEnv * env, CHECK_GL_ERROR } +/* + * Class: org_lwjgl_opengl_GL + * Method: glStencilOpSeparateATI + * Signature: (IIII)V + */ +JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL_glStencilOpSeparateATI + (JNIEnv *env, jclass clazz, jint p0, jint p1, jint p2, jint p3) +{ + CHECK_EXISTS(glStencilOpSeparateATI) + glStencilOpSeparateATI(p0, p1, p2, p3); + CHECK_GL_ERROR +} + +/* + * Class: org_lwjgl_opengl_GL + * Method: glStencilFuncSeparateATI + * Signature: (IIII)V + */ +JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL_glStencilFuncSeparateATI + (JNIEnv *env, jclass clazz, jint p0, jint p1, jint p2, jint p3) +{ + CHECK_EXISTS(glStencilFuncSeparateATI) + glStencilFuncSeparateATI(p0, p1, p2, p3); + CHECK_GL_ERROR +} + /* * Class: org_lwjgl_opengl_GL * Method: glPointParameterfARB diff --git a/src/native/common/org_lwjgl_opengl_GL.h b/src/native/common/org_lwjgl_opengl_GL.h index aae7db0b..3077a7d8 100644 --- a/src/native/common/org_lwjgl_opengl_GL.h +++ b/src/native/common/org_lwjgl_opengl_GL.h @@ -1279,6 +1279,22 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL_glPNTrianglesfATI JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL_glPNTrianglesiATI (JNIEnv *, jclass, jint, jint); +/* + * Class: org_lwjgl_opengl_GL + * Method: glStencilOpSeparateATI + * Signature: (IIII)V + */ +JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL_glStencilOpSeparateATI + (JNIEnv *, jclass, jint, jint, jint, jint); + +/* + * Class: org_lwjgl_opengl_GL + * Method: glStencilFuncSeparateATI + * Signature: (IIII)V + */ +JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL_glStencilFuncSeparateATI + (JNIEnv *, jclass, jint, jint, jint, jint); + /* * Class: org_lwjgl_opengl_GL * Method: glPointParameterfARB