lwjgl/src/native/common/org_lwjgl_opengl_GL14.cpp

399 lines
17 KiB
C++

/*
* Copyright (c) 2002 Light Weight Java Game Library Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'Light Weight Java Game Library' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* $Id$
*
* Core OpenGL functions.
*
* @author cix_foo <cix_foo@users.sourceforge.net>
* @version $Revision$
*/
#include "org_lwjgl_opengl_GL14.h"
#include "checkGLerror.h"
#include "extgl.h"
typedef void (APIENTRY * glBlendColorPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha );
typedef void (APIENTRY * glBlendEquationPROC) (GLenum mode );
typedef void (APIENTRY * glFogCoordfPROC) (GLfloat coord);
typedef void (APIENTRY * glFogCoordfvPROC) (const GLfloat *coord);
typedef void (APIENTRY * glFogCoorddPROC) (GLdouble coord);
typedef void (APIENTRY * glFogCoorddvPROC) (const GLdouble *coord);
typedef void (APIENTRY * glFogCoordPointerPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
typedef void (APIENTRY * glMultiDrawArraysPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
typedef void (APIENTRY * glMultiDrawElementsPROC) (GLenum mode, GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount);
typedef void (APIENTRY * glPointParameterfPROC) (GLenum pname, GLfloat param);
typedef void (APIENTRY * glPointParameterfvPROC) (GLenum pname, GLfloat *params);
typedef void (APIENTRY * glSecondaryColor3bPROC) (GLbyte red, GLbyte green, GLbyte blue);
typedef void (APIENTRY * glSecondaryColor3bvPROC) (const GLbyte *v);
typedef void (APIENTRY * glSecondaryColor3dPROC) (GLdouble red, GLdouble green, GLdouble blue);
typedef void (APIENTRY * glSecondaryColor3dvPROC) (const GLdouble *v);
typedef void (APIENTRY * glSecondaryColor3fPROC) (GLfloat red, GLfloat green, GLfloat blue);
typedef void (APIENTRY * glSecondaryColor3fvPROC) (const GLfloat *v);
typedef void (APIENTRY * glSecondaryColor3iPROC) (GLint red, GLint green, GLint blue);
typedef void (APIENTRY * glSecondaryColor3ivPROC) (const GLint *v);
typedef void (APIENTRY * glSecondaryColor3sPROC) (GLshort red, GLshort green, GLshort blue);
typedef void (APIENTRY * glSecondaryColor3svPROC) (const GLshort *v);
typedef void (APIENTRY * glSecondaryColor3ubPROC) (GLubyte red, GLubyte green, GLubyte blue);
typedef void (APIENTRY * glSecondaryColor3ubvPROC) (const GLubyte *v);
typedef void (APIENTRY * glSecondaryColor3uiPROC) (GLuint red, GLuint green, GLuint blue);
typedef void (APIENTRY * glSecondaryColor3uivPROC) (const GLuint *v);
typedef void (APIENTRY * glSecondaryColor3usPROC) (GLushort red, GLushort green, GLushort blue);
typedef void (APIENTRY * glSecondaryColor3usvPROC) (const GLushort *v);
typedef void (APIENTRY * glSecondaryColorPointerPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
typedef void (APIENTRY * glBlendFuncSeparatePROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
typedef void (APIENTRY * glWindowPos2dPROC) (GLdouble x, GLdouble y);
typedef void (APIENTRY * glWindowPos2fPROC) (GLfloat x, GLfloat y);
typedef void (APIENTRY * glWindowPos2iPROC) (GLint x, GLint y);
typedef void (APIENTRY * glWindowPos2sPROC) (GLshort x, GLshort y);
typedef void (APIENTRY * glWindowPos2dvPROC) (const GLdouble *p);
typedef void (APIENTRY * glWindowPos2fvPROC) (const GLfloat *p);
typedef void (APIENTRY * glWindowPos2ivPROC) (const GLint *p);
typedef void (APIENTRY * glWindowPos2svPROC) (const GLshort *p);
typedef void (APIENTRY * glWindowPos3dPROC) (GLdouble x, GLdouble y, GLdouble z);
typedef void (APIENTRY * glWindowPos3fPROC) (GLfloat x, GLfloat y, GLfloat z);
typedef void (APIENTRY * glWindowPos3iPROC) (GLint x, GLint y, GLint z);
typedef void (APIENTRY * glWindowPos3sPROC) (GLshort x, GLshort y, GLshort z);
typedef void (APIENTRY * glWindowPos3dvPROC) (const GLdouble *p);
typedef void (APIENTRY * glWindowPos3fvPROC) (const GLfloat *p);
typedef void (APIENTRY * glWindowPos3ivPROC) (const GLint *p);
typedef void (APIENTRY * glWindowPos3svPROC) (const GLshort *p);
static glFogCoordfPROC glFogCoordf;
static glFogCoordfvPROC glFogCoordfv;
static glFogCoorddPROC glFogCoordd;
static glFogCoorddvPROC glFogCoorddv;
static glFogCoordPointerPROC glFogCoordPointer;
static glMultiDrawArraysPROC glMultiDrawArrays;
static glMultiDrawElementsPROC glMultiDrawElements;
static glPointParameterfPROC glPointParameterf;
static glPointParameterfvPROC glPointParameterfv;
static glSecondaryColor3bPROC glSecondaryColor3b;
static glSecondaryColor3bvPROC glSecondaryColor3bv;
static glSecondaryColor3dPROC glSecondaryColor3d;
static glSecondaryColor3dvPROC glSecondaryColor3dv;
static glSecondaryColor3fPROC glSecondaryColor3f;
static glSecondaryColor3fvPROC glSecondaryColor3fv;
static glSecondaryColor3iPROC glSecondaryColor3i;
static glSecondaryColor3ivPROC glSecondaryColor3iv;
static glSecondaryColor3sPROC glSecondaryColor3s;
static glSecondaryColor3svPROC glSecondaryColor3sv;
static glSecondaryColor3ubPROC glSecondaryColor3ub;
static glSecondaryColor3ubvPROC glSecondaryColor3ubv;
static glSecondaryColor3uiPROC glSecondaryColor3ui;
static glSecondaryColor3uivPROC glSecondaryColor3uiv;
static glSecondaryColor3usPROC glSecondaryColor3us;
static glSecondaryColor3usvPROC glSecondaryColor3usv;
static glSecondaryColorPointerPROC glSecondaryColorPointer;
static glBlendFuncSeparatePROC glBlendFuncSeparate;
static glWindowPos2dPROC glWindowPos2d;
static glWindowPos2fPROC glWindowPos2f;
static glWindowPos2iPROC glWindowPos2i;
static glWindowPos2sPROC glWindowPos2s;
static glWindowPos2dvPROC glWindowPos2dv;
static glWindowPos2fvPROC glWindowPos2fv;
static glWindowPos2ivPROC glWindowPos2iv;
static glWindowPos2svPROC glWindowPos2sv;
static glWindowPos3dPROC glWindowPos3d;
static glWindowPos3fPROC glWindowPos3f;
static glWindowPos3iPROC glWindowPos3i;
static glWindowPos3sPROC glWindowPos3s;
static glWindowPos3dvPROC glWindowPos3dv;
static glWindowPos3fvPROC glWindowPos3fv;
static glWindowPos3ivPROC glWindowPos3iv;
static glWindowPos3svPROC glWindowPos3sv;
static glBlendColorPROC glBlendColor;
static glBlendEquationPROC glBlendEquation;
void extgl_InitOpenGL1_4(JNIEnv *env, jobject ext_set)
{
if (!extgl_Extensions.OpenGL14)
return;
glBlendColor = (glBlendColorPROC) extgl_GetProcAddress("glBlendColor");
glBlendEquation = (glBlendEquationPROC) extgl_GetProcAddress("glBlendEquation");
glFogCoordf = (glFogCoordfPROC) extgl_GetProcAddress("glFogCoordf");
glFogCoordfv = (glFogCoordfvPROC) extgl_GetProcAddress("glFogCoordfv");
glFogCoordd = (glFogCoorddPROC) extgl_GetProcAddress("glFogCoordd");
glFogCoorddv = (glFogCoorddvPROC) extgl_GetProcAddress("glFogCoorddv");
glFogCoordPointer = (glFogCoordPointerPROC) extgl_GetProcAddress("glFogCoordPointer");
glMultiDrawArrays = (glMultiDrawArraysPROC) extgl_GetProcAddress("glMultiDrawArrays");
glMultiDrawElements = (glMultiDrawElementsPROC) extgl_GetProcAddress("glMultiDrawElements");
glPointParameterf = (glPointParameterfPROC) extgl_GetProcAddress("glPointParameterf");
glPointParameterfv = (glPointParameterfvPROC) extgl_GetProcAddress("glPointParameterfv");
glSecondaryColor3b = (glSecondaryColor3bPROC) extgl_GetProcAddress("glSecondaryColor3b");
glSecondaryColor3bv = (glSecondaryColor3bvPROC) extgl_GetProcAddress("glSecondaryColor3bv");
glSecondaryColor3d = (glSecondaryColor3dPROC) extgl_GetProcAddress("glSecondaryColor3d");
glSecondaryColor3dv = (glSecondaryColor3dvPROC) extgl_GetProcAddress("glSecondaryColor3dv");
glSecondaryColor3f = (glSecondaryColor3fPROC) extgl_GetProcAddress("glSecondaryColor3f");
glSecondaryColor3fv = (glSecondaryColor3fvPROC) extgl_GetProcAddress("glSecondaryColor3fv");
glSecondaryColor3i = (glSecondaryColor3iPROC) extgl_GetProcAddress("glSecondaryColor3i");
glSecondaryColor3iv = (glSecondaryColor3ivPROC) extgl_GetProcAddress("glSecondaryColor3iv");
glSecondaryColor3s = (glSecondaryColor3sPROC) extgl_GetProcAddress("glSecondaryColor3s");
glSecondaryColor3sv = (glSecondaryColor3svPROC) extgl_GetProcAddress("glSecondaryColor3sv");
glSecondaryColor3ub = (glSecondaryColor3ubPROC) extgl_GetProcAddress("glSecondaryColor3ub");
glSecondaryColor3ubv = (glSecondaryColor3ubvPROC) extgl_GetProcAddress("glSecondaryColor3ubv");
glSecondaryColor3ui = (glSecondaryColor3uiPROC) extgl_GetProcAddress("glSecondaryColor3ui");
glSecondaryColor3uiv = (glSecondaryColor3uivPROC) extgl_GetProcAddress("glSecondaryColor3uiv");
glSecondaryColor3us = (glSecondaryColor3usPROC) extgl_GetProcAddress("glSecondaryColor3us");
glSecondaryColor3usv = (glSecondaryColor3usvPROC) extgl_GetProcAddress("glSecondaryColor3usv");
glSecondaryColorPointer = (glSecondaryColorPointerPROC) extgl_GetProcAddress("glSecondaryColorPointer");
glBlendFuncSeparate = (glBlendFuncSeparatePROC) extgl_GetProcAddress("glBlendFuncSeparate");
glWindowPos2d = (glWindowPos2dPROC) extgl_GetProcAddress("glWindowPos2d");
glWindowPos2f = (glWindowPos2fPROC) extgl_GetProcAddress("glWindowPos2f");
glWindowPos2i = (glWindowPos2iPROC) extgl_GetProcAddress("glWindowPos2i");
glWindowPos2s = (glWindowPos2sPROC) extgl_GetProcAddress("glWindowPos2s");
glWindowPos2dv = (glWindowPos2dvPROC) extgl_GetProcAddress("glWindowPos2dv");
glWindowPos2fv = (glWindowPos2fvPROC) extgl_GetProcAddress("glWindowPos2fv");
glWindowPos2iv = (glWindowPos2ivPROC) extgl_GetProcAddress("glWindowPos2iv");
glWindowPos2sv = (glWindowPos2svPROC) extgl_GetProcAddress("glWindowPos2sv");
glWindowPos3d = (glWindowPos3dPROC) extgl_GetProcAddress("glWindowPos3d");
glWindowPos3f = (glWindowPos3fPROC) extgl_GetProcAddress("glWindowPos3f");
glWindowPos3i = (glWindowPos3iPROC) extgl_GetProcAddress("glWindowPos3i");
glWindowPos3s = (glWindowPos3sPROC) extgl_GetProcAddress("glWindowPos3s");
glWindowPos3dv = (glWindowPos3dvPROC) extgl_GetProcAddress("glWindowPos3dv");
glWindowPos3fv = (glWindowPos3fvPROC) extgl_GetProcAddress("glWindowPos3fv");
glWindowPos3iv = (glWindowPos3ivPROC) extgl_GetProcAddress("glWindowPos3iv");
glWindowPos3sv = (glWindowPos3svPROC) extgl_GetProcAddress("glWindowPos3sv");
EXTGL_SANITY_CHECK(env, ext_set, OpenGL14)
}
/*
* Class: org_lwjgl_opengl_GL14
* Method: glFogCoordf
* Signature: (F)V
*/
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL14_glFogCoordf
(JNIEnv *env, jclass clazz, jfloat f) {
CHECK_EXISTS(glFogCoordf)
glFogCoordf(f);
}
/*
* Class: org_lwjgl_opengl_GL14
* Method: nglFogCoordPointer
* Signature: (IILjava/nio/Buffer;)V
*/
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL14_nglFogCoordPointer
(JNIEnv *env, jclass clazz, jint p1, jint p2, jobject buffer, jint offset) {
CHECK_EXISTS(glFogCoordPointer)
GLvoid *address = (GLvoid *)(offset + (GLbyte *)env->GetDirectBufferAddress(buffer));
glFogCoordPointer(p1, p2, address);
CHECK_GL_ERROR
}
/*
* Class: org_lwjgl_opengl_GL14
* Method: nglFogCoordPointerVBO
* Signature: (IILjava/nio/Buffer;)V
*/
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL14_nglFogCoordPointerVBO
(JNIEnv *env, jclass clazz, jint p1, jint p2, jint buffer_offset) {
CHECK_EXISTS(glFogCoordPointer)
glFogCoordPointer(p1, p2, offsetToPointer(buffer_offset));
CHECK_GL_ERROR
}
/*
* Class: org_lwjgl_opengl_GL14
* Method: glMultiDrawArrays
* Signature: (IIII)V
*/
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL14_nglMultiDrawArrays
(JNIEnv *env, jclass clazz, jint mode, jobject first, jint first_offset, jobject count, jint count_offset, jint primcount) {
CHECK_EXISTS(glMultiDrawArrays)
GLint *address = first_offset + (GLint *)env->GetDirectBufferAddress(first);
GLsizei *address2 = count_offset + (GLsizei *)env->GetDirectBufferAddress(count);
glMultiDrawArrays(mode, address, address2, (GLsizei)primcount);
CHECK_GL_ERROR
}
/*
* Class: org_lwjgl_opengl_GL14
* Method: glMultiDrawElements
* Signature: (IIIII)V
*/
/*JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL14_glMultiDrawElements
(JNIEnv *env, jclass clazz, jint mode, jobject count, jint type, jobject indices, jint primcount) {
CHECK_EXISTS(glMultiDrawElements)
const GLsizei *address = (const GLsizei *)env->GetDirectBufferAddress(count);
const void *address2 = (const void *)env->GetDirectBufferAddress(indices);
glMultiDrawElements(mode, address, type, address2, primcount);
CHECK_GL_ERROR
}
*/
/*
* Class: org_lwjgl_opengl_GL14
* Method: glPointParameterf
* Signature: (IF)V
*/
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL14_glPointParameterf
(JNIEnv *env, jclass clazz, jint p1, jfloat p2) {
CHECK_EXISTS(glPointParameterf)
glPointParameterf(p1, p2);
CHECK_GL_ERROR
}
/*
* Class: org_lwjgl_opengl_GL14
* Method: glPointParameterfv
* Signature: (ILjava/nio/FloatBuffer;)V
*/
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL14_nglPointParameterfv
(JNIEnv *env, jclass clazz, jint p1, jobject buffer, jint offset) {
CHECK_EXISTS(glPointParameterfv)
GLfloat *address = offset + (GLfloat *)env->GetDirectBufferAddress(buffer);
glPointParameterfv(p1, address);
CHECK_GL_ERROR
}
/*
* Class: org_lwjgl_opengl_GL14
* Method: glSecondaryColor3b
* Signature: (BBB)V
*/
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL14_glSecondaryColor3b
(JNIEnv *env, jclass clazz, jbyte p1, jbyte p2, jbyte p3) {
CHECK_EXISTS(glSecondaryColor3b)
glSecondaryColor3b(p1, p2, p3);
}
/*
* Class: org_lwjgl_opengl_GL14
* Method: glSecondaryColor3f
* Signature: (FFF)V
*/
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL14_glSecondaryColor3f
(JNIEnv *env, jclass clazz, jfloat p1, jfloat p2, jfloat p3) {
CHECK_EXISTS(glSecondaryColor3f)
glSecondaryColor3f(p1, p2, p3);
}
/*
* Class: org_lwjgl_opengl_GL14
* Method: glSecondaryColor3ub
* Signature: (BBB)V
*/
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL14_glSecondaryColor3ub
(JNIEnv *env, jclass clazz, jbyte p1, jbyte p2, jbyte p3) {
CHECK_EXISTS(glSecondaryColor3ub)
glSecondaryColor3ub(p1, p2, p3);
}
/*
* Class: org_lwjgl_opengl_GL14
* Method: nglSecondaryColorPointer
* Signature: (IIILjava/nio/Buffer;)V
*/
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL14_nglSecondaryColorPointer
(JNIEnv *env, jclass clazz, jint p1, jint p2, jint p3, jobject buffer, jint offset) {
CHECK_EXISTS(glSecondaryColorPointer)
const GLvoid *address = (const GLvoid *)(offset + (GLbyte *)env->GetDirectBufferAddress(buffer));
glSecondaryColorPointer(p1, p2, p3, address);
CHECK_GL_ERROR
}
/*
* Class: org_lwjgl_opengl_GL14
* Method: nglSecondaryColorPointerVBO
* Signature: (IIILjava/nio/Buffer;)V
*/
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL14_nglSecondaryColorPointerVBO
(JNIEnv *env, jclass clazz, jint p1, jint p2, jint p3, jint buffer_offset) {
CHECK_EXISTS(glSecondaryColorPointer)
glSecondaryColorPointer(p1, p2, p3, offsetToPointer(buffer_offset));
CHECK_GL_ERROR
}
/*
* Class: org_lwjgl_opengl_GL14
* Method: glBlendFuncSeparate
* Signature: (IIII)V
*/
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL14_glBlendFuncSeparate
(JNIEnv *env, jclass clazz, jint p1, jint p2, jint p3, jint p4) {
CHECK_EXISTS(glBlendFuncSeparate)
glBlendFuncSeparate(p1, p2, p3, p4);
CHECK_GL_ERROR
}
/*
* Class: org_lwjgl_opengl_GL14
* Method: glWindowPos2f
* Signature: (FF)V
*/
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL14_glWindowPos2f
(JNIEnv *env, jclass clazz, jfloat p1, jfloat p2) {
CHECK_EXISTS(glWindowPos2f);
glWindowPos2f(p1, p2);
}
/*
* Class: org_lwjgl_opengl_GL14
* Method: glWindowPos2i
* Signature: (II)V
*/
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL14_glWindowPos2i
(JNIEnv *env, jclass clazz, jint p1, jint p2) {
CHECK_EXISTS(glWindowPos2i)
glWindowPos2i(p1, p2);
}
/*
* Class: org_lwjgl_opengl_GL14
* Method: glWindowPos3f
* Signature: (FFF)V
*/
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL14_glWindowPos3f
(JNIEnv *env, jclass clazz, jfloat p1, jfloat p2, jfloat p3) {
CHECK_EXISTS(glWindowPos3f)
glWindowPos3f(p1, p2, p3);
}
/*
* Class: org_lwjgl_opengl_GL14
* Method: glWindowPos3i
* Signature: (III)V
*/
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL14_glWindowPos3i
(JNIEnv *env, jclass clazz, jint p1, jint p2, jint p3) {
CHECK_EXISTS(glWindowPos3i)
glWindowPos3i(p1, p2, p3);
}