Added support for NV_present_video and NV_video_capture.
Re-designed WindowsPeerInfo so that we can more easily use WGL extensions in the future.
This commit is contained in:
parent
9b4b2f6f92
commit
eff8493ef6
|
@ -49,6 +49,7 @@
|
|||
<!-- Useful when we need to force native recompilation -->
|
||||
<target name="clean-native" description="Cleans native files generated by this ant script" depends="clean-generated-native">
|
||||
<delete dir="${lwjgl.bin}/lwjgl" quiet="true" failonerror="false" taskname="cleaning native bin folder" />
|
||||
<delete dir="${lwjgl.bin}/lwjgles" quiet="true" failonerror="false" taskname="cleaning native OpenGL ES bin folder"/>
|
||||
</target>
|
||||
|
||||
<!-- Creates a distribution of LWJGL -->
|
||||
|
@ -305,6 +306,8 @@
|
|||
<class name="org.lwjgl.opengl.GLContext"/>
|
||||
<class name="org.lwjgl.opengl.Pbuffer"/>
|
||||
<class name="org.lwjgl.opengl.CallbackUtil"/>
|
||||
<class name="org.lwjgl.opengl.NVPresentVideoUtil"/>
|
||||
<class name="org.lwjgl.opengl.NVVideoCaptureUtil"/>
|
||||
</javah>
|
||||
|
||||
<javah classpath="${lwjgl.bin}" destdir="${lwjgl.src.headers}/opengles" force="yes">
|
||||
|
|
|
@ -0,0 +1,122 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2011 LWJGL 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 'LWJGL' 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.
|
||||
*/
|
||||
|
||||
package org.lwjgl.opengl;
|
||||
|
||||
import org.lwjgl.BufferChecks;
|
||||
import org.lwjgl.LWJGLUtil;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.IntBuffer;
|
||||
import java.nio.LongBuffer;
|
||||
|
||||
/**
|
||||
* This class exposes the platform specific functionality present in the
|
||||
* NV_present_video extension.
|
||||
*
|
||||
* @author Spasi
|
||||
* @since 20/5/2011
|
||||
*/
|
||||
public final class NVPresentVideoUtil {
|
||||
|
||||
private NVPresentVideoUtil() {}
|
||||
|
||||
private static void checkExtension() {
|
||||
if ( LWJGLUtil.CHECKS && !GLContext.getCapabilities().GL_NV_present_video )
|
||||
throw new IllegalStateException("NV_present_video is not supported");
|
||||
}
|
||||
|
||||
private static ByteBuffer getPeerInfo() {
|
||||
return ContextGL.getCurrentContext().getPeerInfo().getHandle();
|
||||
}
|
||||
|
||||
/**
|
||||
* Enumerate the available video output devices. This method is the cross-platform
|
||||
* equivalent of glXEnumerateVideoDevicesNV and wglEnumerateVideoDevicesNV. Since they are
|
||||
* not really compatible, this method works like the WGL version. That is, you first
|
||||
* call it with a null devices buffer, get the number of devices, then call it again
|
||||
* with an appropriately sized buffer.
|
||||
*
|
||||
* @param devices the buffer to store devices in
|
||||
*
|
||||
* @return the number of available video output devices
|
||||
*/
|
||||
public static int glEnumerateVideoDevicesNV(LongBuffer devices) {
|
||||
checkExtension();
|
||||
|
||||
if ( devices != null )
|
||||
BufferChecks.checkBuffer(devices, 1);
|
||||
return nglEnumerateVideoDevicesNV(getPeerInfo(), devices, devices == null ? 0 : devices.position());
|
||||
}
|
||||
|
||||
private static native int nglEnumerateVideoDevicesNV(ByteBuffer peer_info, LongBuffer devices, int devices_position);
|
||||
|
||||
/**
|
||||
* Binds the video output device specified to one of the context's available video output slots.
|
||||
* This method is the cross-platform equivalent of glXBindVideoDeviceNV and wglBindVideoDeviceNV.
|
||||
* To release a video device without binding another device to the same slot, call it with
|
||||
* video_device set to 0 (will use INVALID_HANDLE_VALUE on WGL).
|
||||
*
|
||||
* @param video_slot the video slot
|
||||
* @param video_device the video device
|
||||
* @param attrib_list the attributes to use
|
||||
*
|
||||
* @return true if the binding was successful
|
||||
*/
|
||||
public static boolean glBindVideoDeviceNV(int video_slot, long video_device, IntBuffer attrib_list) {
|
||||
checkExtension();
|
||||
|
||||
if ( attrib_list != null )
|
||||
BufferChecks.checkNullTerminated(attrib_list);
|
||||
return nglBindVideoDeviceNV(getPeerInfo(), video_slot, video_device, attrib_list, attrib_list == null ? 0 : attrib_list.position());
|
||||
}
|
||||
|
||||
private static native boolean nglBindVideoDeviceNV(ByteBuffer peer_info, int video_slot, long video_device, IntBuffer attrib_list, int attrib_list_position);
|
||||
|
||||
/**
|
||||
* Queries an attribute associated with the current context. This method is the cross-platform
|
||||
* equivalent of glXQueryContext and wglQueryCurrentContextNV.
|
||||
*
|
||||
* @param attrib the attribute to query
|
||||
* @param value the buffer to store the value in
|
||||
*/
|
||||
public static boolean glQueryContextNV(int attrib, IntBuffer value) {
|
||||
checkExtension();
|
||||
|
||||
BufferChecks.checkBuffer(value, 1);
|
||||
ContextGL ctx = ContextGL.getCurrentContext();
|
||||
return nglQueryContextNV(ctx.getPeerInfo().getHandle(), ctx.getHandle(), attrib, value, value.position());
|
||||
}
|
||||
|
||||
private static native boolean nglQueryContextNV(ByteBuffer peer_info, ByteBuffer context_handle, int attrib, IntBuffer value, int value_position);
|
||||
|
||||
}
|
|
@ -0,0 +1,153 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2011 LWJGL 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 'LWJGL' 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.
|
||||
*/
|
||||
|
||||
package org.lwjgl.opengl;
|
||||
|
||||
import org.lwjgl.BufferChecks;
|
||||
import org.lwjgl.LWJGLUtil;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.IntBuffer;
|
||||
import java.nio.LongBuffer;
|
||||
|
||||
/**
|
||||
* This class exposes the platform specific functionality present in the
|
||||
* NV_video_capture extension.
|
||||
*
|
||||
* @author Spasi
|
||||
* @since 20/5/2011
|
||||
*/
|
||||
public final class NVVideoCaptureUtil {
|
||||
|
||||
private NVVideoCaptureUtil() {}
|
||||
|
||||
private static void checkExtension() {
|
||||
if ( LWJGLUtil.CHECKS && !GLContext.getCapabilities().GL_NV_video_capture )
|
||||
throw new IllegalStateException("NV_video_capture is not supported");
|
||||
}
|
||||
|
||||
private static ByteBuffer getPeerInfo() {
|
||||
return ContextGL.getCurrentContext().getPeerInfo().getHandle();
|
||||
}
|
||||
|
||||
/**
|
||||
* After successfully locking a video capture device, use this method to bind it
|
||||
* to the capture slot specified in the current context. This method is the cross-
|
||||
* platform equivalent of glXBindVideoCaptureDeviceNV and wglBindVideoCaptureDeviceNV.
|
||||
*
|
||||
* @param video_slot the video slot
|
||||
* @param device the video capture device
|
||||
*
|
||||
* @return true if the binding was successful
|
||||
*/
|
||||
public static boolean glBindVideoCaptureDeviceNV(int video_slot, long device) {
|
||||
checkExtension();
|
||||
return nglBindVideoCaptureDeviceNV(getPeerInfo(), video_slot, device);
|
||||
}
|
||||
|
||||
private static native boolean nglBindVideoCaptureDeviceNV(ByteBuffer peer_info, int video_slot, long device);
|
||||
|
||||
/**
|
||||
* Enumerate the available video capture devices. This method is the cross-platform
|
||||
* equivalent of glXEnumerateVideoCaptureDevicesNV and wglEnumerateVideoCaptureDevicesNV.
|
||||
* Since they are not really compatible, this method works like the WGL version. That is,
|
||||
* you first call it with a null devices buffer, get the number of devices, then call it
|
||||
* again with an appropriately sized buffer.
|
||||
*
|
||||
* @param devices the buffer to store devices in
|
||||
*
|
||||
* @return the number of available video capture devices
|
||||
*/
|
||||
public static int glEnumerateVideoCaptureDevicesNV(LongBuffer devices) {
|
||||
checkExtension();
|
||||
|
||||
if ( devices != null )
|
||||
BufferChecks.checkBuffer(devices, 1);
|
||||
return nglEnumerateVideoCaptureDevicesNV(getPeerInfo(), devices, devices == null ? 0 : devices.position());
|
||||
}
|
||||
|
||||
private static native int nglEnumerateVideoCaptureDevicesNV(ByteBuffer peer_info, LongBuffer devices, int devices_position);
|
||||
|
||||
/**
|
||||
* To lock a video capture device to a display connection, use this method.
|
||||
* Before using a video capture device, it must be locked. Once a
|
||||
* video capture device is locked by a process, no other process can
|
||||
* lock a video capture device with the same unique ID until the lock
|
||||
* is released or the process ends.
|
||||
*
|
||||
* @param device the device to lock
|
||||
*
|
||||
* @return true if the lock was successful
|
||||
*/
|
||||
public static boolean glLockVideoCaptureDeviceNV(long device) {
|
||||
checkExtension();
|
||||
return nglLockVideoCaptureDeviceNV(getPeerInfo(), device);
|
||||
}
|
||||
|
||||
private static native boolean nglLockVideoCaptureDeviceNV(ByteBuffer peer_info, long device);
|
||||
|
||||
/**
|
||||
* Use this method to query the unique ID of the physical device backing a
|
||||
* video capture device handle.
|
||||
*
|
||||
* @param device the device
|
||||
* @param attribute the attribute to query
|
||||
* @param value the buffer to store the value in
|
||||
*
|
||||
* @return true if the query was successful
|
||||
*/
|
||||
public static boolean glQueryVideoCaptureDeviceNV(long device, int attribute, IntBuffer value) {
|
||||
checkExtension();
|
||||
|
||||
BufferChecks.checkBuffer(value, 1);
|
||||
return nglQueryVideoCaptureDeviceNV(getPeerInfo(), device, attribute, value, value.position());
|
||||
}
|
||||
|
||||
private static native boolean nglQueryVideoCaptureDeviceNV(ByteBuffer peer_info, long device, int attribute, IntBuffer value, int value_position);
|
||||
|
||||
/**
|
||||
* Use this method when finished capturing data on a locked video capture device
|
||||
* to unlock it.
|
||||
*
|
||||
* @param device the device
|
||||
*
|
||||
* @return true if the device was unlocked successfully
|
||||
*/
|
||||
public static boolean glReleaseVideoCaptureDeviceNV(long device) {
|
||||
checkExtension();
|
||||
return nglReleaseVideoCaptureDeviceNV(getPeerInfo(), device);
|
||||
}
|
||||
|
||||
private static native boolean nglReleaseVideoCaptureDeviceNV(ByteBuffer peer_info, long device);
|
||||
|
||||
}
|
||||
|
|
@ -103,4 +103,19 @@ extern bool extgl_InitializeFunctions(int num_functions, ExtFunction *functions)
|
|||
extern bool extgl_QueryExtension(const GLubyte*extensions, const char *name);
|
||||
extern void *extgl_GetProcAddress(const char *name);
|
||||
|
||||
|
||||
#ifndef __APPLE__
|
||||
/* NV_present_video functions (GLX & WGL only) */
|
||||
extern jint extgl_EnumerateVideoDevicesNV(JNIEnv *env, jobject peer_info_handle, jobject devices, jint devices_position);
|
||||
extern jboolean extgl_BindVideoDeviceNV(JNIEnv *env, jobject peer_info_handle, jint video_slot, jlong video_device, jobject attrib_list, jint attrib_list_position);
|
||||
extern jboolean extgl_QueryContextNV(JNIEnv *env, jobject peer_info_handle, jobject context_handle, jint attrib, jobject value, jint value_position);
|
||||
|
||||
/* NV_video_capture functions (GLX & WGL only) */
|
||||
extern jboolean extgl_BindVideoCaptureDeviceNV(JNIEnv *env, jobject peer_info_handle, jint video_slot, jlong device);
|
||||
extern jint extgl_EnumerateVideoCaptureDevicesNV(JNIEnv *env, jobject peer_info_handle, jobject devices, jint devices_position);
|
||||
extern jboolean extgl_LockVideoCaptureDeviceNV(JNIEnv *env, jobject peer_info_handle, jlong device);
|
||||
extern jboolean extgl_QueryVideoCaptureDeviceNV(JNIEnv *env, jobject peer_info_handle, jlong device, jint attribute, jobject value, jint value_position);
|
||||
extern jboolean extgl_ReleaseVideoCaptureDeviceNV(JNIEnv *env, jobject peer_info_handle, jlong device);
|
||||
#endif
|
||||
|
||||
#endif /* __EXTGL_H__ */
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2011 LWJGL 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 'LWJGL' 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* JNI implementation of the NVPresentVideoUtil class (GLX & WGL only).
|
||||
*
|
||||
* @author Spasi
|
||||
*/
|
||||
|
||||
#include <jni.h>
|
||||
#include "common_tools.h"
|
||||
#include "extgl.h"
|
||||
#include "org_lwjgl_opengl_NVPresentVideoUtil.h"
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_NVPresentVideoUtil_nglEnumerateVideoDevicesNV(
|
||||
JNIEnv *env, jclass clazz, jobject peer_info, jobject devices, jint devices_position
|
||||
) {
|
||||
#ifdef __APPLE__
|
||||
return 0;
|
||||
#else
|
||||
return extgl_EnumerateVideoDevicesNV(env, peer_info, devices, devices_position);
|
||||
#endif
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_org_lwjgl_opengl_NVPresentVideoUtil_nglBindVideoDeviceNV(
|
||||
JNIEnv *env, jclass clazz, jobject peer_info, jint video_slot, jlong video_device, jobject attrib_list, jint attrib_list_position
|
||||
) {
|
||||
#ifdef __APPLE__
|
||||
return false;
|
||||
#else
|
||||
return extgl_BindVideoDeviceNV(env, peer_info, video_slot, video_device, attrib_list, attrib_list_position);
|
||||
#endif
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_org_lwjgl_opengl_NVPresentVideoUtil_nglQueryContextNV(JNIEnv *env, jclass clazz, jobject peer_info, jobject context_handle, jint attrib, jobject value, jint value_position) {
|
||||
#ifdef __APPLE__
|
||||
return false;
|
||||
#else
|
||||
return extgl_QueryContextNV(env, peer_info, context_handle, attrib, value, value_position);
|
||||
#endif
|
||||
}
|
|
@ -0,0 +1,82 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2011 LWJGL 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 'LWJGL' 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* JNI implementation of the NVVideoCaptureUtil class (GLX & WGL only).
|
||||
*
|
||||
* @author Spasi
|
||||
*/
|
||||
|
||||
#include <jni.h>
|
||||
#include "common_tools.h"
|
||||
#include "extgl.h"
|
||||
#include "org_lwjgl_opengl_NVVideoCaptureUtil.h"
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_org_lwjgl_opengl_NVVideoCaptureUtil_nglBindVideoCaptureDeviceNV(JNIEnv *env, jclass clazz, jobject peer_info, jint video_slot, jlong device) {
|
||||
#ifdef __APPLE__
|
||||
return false;
|
||||
#else
|
||||
return extgl_BindVideoCaptureDeviceNV(env, peer_info, video_slot, device);
|
||||
#endif
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_NVVideoCaptureUtil_nglEnumerateVideoCaptureDevicesNV(JNIEnv *env, jclass clazz, jobject peer_info, jobject devices, jint devices_position) {
|
||||
#ifdef __APPLE__
|
||||
return 0;
|
||||
#else
|
||||
return extgl_EnumerateVideoCaptureDevicesNV(env, peer_info, devices, devices_position);
|
||||
#endif
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_org_lwjgl_opengl_NVVideoCaptureUtil_nglLockVideoCaptureDeviceNV(JNIEnv *env, jclass clazz, jobject peer_info, jlong device) {
|
||||
#ifdef __APPLE__
|
||||
return false;
|
||||
#else
|
||||
return extgl_LockVideoCaptureDeviceNV(env, peer_info, device);
|
||||
#endif
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_org_lwjgl_opengl_NVVideoCaptureUtil_nglQueryVideoCaptureDeviceNV(JNIEnv *env, jclass clazz, jobject peer_info, jlong device, jint attribute, jobject value, jint value_position) {
|
||||
#ifdef __APPLE__
|
||||
return false;
|
||||
#else
|
||||
return extgl_QueryVideoCaptureDeviceNV(env, peer_info, device, attribute, value, value_position);
|
||||
#endif
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_org_lwjgl_opengl_NVVideoCaptureUtil_nglReleaseVideoCaptureDeviceNV(JNIEnv *env, jclass clazz, jobject peer_info, jlong device) {
|
||||
#ifdef __APPLE__
|
||||
return false;
|
||||
#else
|
||||
return extgl_ReleaseVideoCaptureDeviceNV(env, peer_info, device);
|
||||
#endif
|
||||
}
|
|
@ -0,0 +1,121 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2011 LWJGL 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 'LWJGL' 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* GLX extension implementations.
|
||||
*
|
||||
* @author Spasi
|
||||
*/
|
||||
#include "GLX.h"
|
||||
|
||||
/* NV_present_video functions */
|
||||
|
||||
typedef struct {
|
||||
GLXExtensions extension_flags;
|
||||
GLXContext context;
|
||||
} X11Context;
|
||||
|
||||
jint extgl_EnumerateVideoDevicesNV(JNIEnv *env, jobject peer_info_handle, jobject devices, jint devices_position) {
|
||||
X11PeerInfo *peer_info = (*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
jlong *devices_address = ((jlong *)safeGetBufferAddress(env, devices)) + devices_position;
|
||||
unsigned int *result;
|
||||
int i, elements;
|
||||
|
||||
result = lwjgl_glXEnumerateVideoDevicesNV(peer_info->display, peer_info->screen, &elements);
|
||||
if ( devices_address != NULL ) {
|
||||
for ( i = 0; i < elements; i++ )
|
||||
devices_address[i] = (jlong)result[i];
|
||||
}
|
||||
XFree(result);
|
||||
|
||||
return elements;
|
||||
}
|
||||
|
||||
jboolean extgl_BindVideoDeviceNV(JNIEnv *env, jobject peer_info_handle, jint video_slot, jlong video_device, jobject attrib_list, jint attrib_list_position) {
|
||||
X11PeerInfo *peer_info = (*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
const int *attrib_list_address = ((const int *)safeGetBufferAddress(env, attrib_list)) + attrib_list_position;
|
||||
|
||||
return lwjgl_glXBindVideoDeviceNV(peer_info->display, video_slot, (unsigned int)video_device, attrib_list_address);
|
||||
}
|
||||
|
||||
jboolean extgl_QueryContextNV(JNIEnv *env, jobject peer_info_handle, jobject context_handle, jint attrib, jobject value, jint value_position) {
|
||||
X11PeerInfo *peer_info = (*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
X11Context *context_info = (*env)->GetDirectBufferAddress(env, context_handle);
|
||||
int *value_address = ((int *)(*env)->GetDirectBufferAddress(env, value)) + value_position;
|
||||
|
||||
return lwjgl_glXQueryContext(peer_info->display, context_info->context, attrib, value_address) == GLX_BAD_ATTRIBUTE ? 0 : 1;
|
||||
}
|
||||
|
||||
/* NV_video_capture functions */
|
||||
|
||||
jboolean extgl_BindVideoCaptureDeviceNV(JNIEnv *env, jobject peer_info_handle, jint video_slot, jlong device) {
|
||||
X11PeerInfo *peer_info = (*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
|
||||
return lwjgl_glXBindVideoCaptureDeviceNV(peer_info->display, video_slot, (GLXVideoCaptureDeviceNV)device);
|
||||
}
|
||||
|
||||
jint extgl_EnumerateVideoCaptureDevicesNV(JNIEnv *env, jobject peer_info_handle, jobject devices, jint devices_position) {
|
||||
X11PeerInfo *peer_info = (*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
jlong *devices_address = ((jlong *)safeGetBufferAddress(env, devices)) + devices_position;
|
||||
GLXVideoCaptureDeviceNV *result;
|
||||
int i, elements;
|
||||
|
||||
result = lwjgl_glXEnumerateVideoCaptureDevicesNV(peer_info->display, peer_info->screen, &elements);
|
||||
if ( devices_address != NULL ) {
|
||||
for ( i = 0; i < elements; i++ )
|
||||
devices_address[i] = (jlong)result[i];
|
||||
}
|
||||
XFree(devices);
|
||||
|
||||
return elements;
|
||||
}
|
||||
|
||||
jboolean extgl_LockVideoCaptureDeviceNV(JNIEnv *env, jobject peer_info_handle, jlong device) {
|
||||
X11PeerInfo *peer_info = (*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
|
||||
lwjgl_glXLockVideoCaptureDeviceNV(peer_info->display, (GLXVideoCaptureDeviceNV)device);
|
||||
return true;
|
||||
}
|
||||
|
||||
jboolean extgl_QueryVideoCaptureDeviceNV(JNIEnv *env, jobject peer_info_handle, jlong device, jint attribute, jobject value, jint value_position) {
|
||||
X11PeerInfo *peer_info = (*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
int *value_address = ((int *)(*env)->GetDirectBufferAddress(env, value)) + value_position;
|
||||
|
||||
return lwjgl_glXQueryVideoCaptureDeviceNV(peer_info->display, (GLXVideoCaptureDeviceNV)device, attribute, value_address);
|
||||
}
|
||||
|
||||
jboolean extgl_ReleaseVideoCaptureDeviceNV(JNIEnv *env, jobject peer_info_handle, jlong device) {
|
||||
X11PeerInfo *peer_info = (*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
|
||||
lwjgl_glXReleaseVideoCaptureDeviceNV(peer_info->display, (GLXVideoCaptureDeviceNV)device);
|
||||
return true;
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2011 LWJGL 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 'LWJGL' 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* GLX extension implementations.
|
||||
*
|
||||
* @author Spasi
|
||||
*/
|
||||
#ifndef __LWJGL_GLX_H
|
||||
#define __LWJGL_GLX_H
|
||||
|
||||
#include <jni.h>
|
||||
#include "common_tools.h"
|
||||
#include "context.h"
|
||||
|
||||
#include "extgl.h"
|
||||
#include "extgl_glx.h"
|
||||
|
||||
/* NV_present_video functions */
|
||||
extern jint extgl_EnumerateVideoDevicesNV(JNIEnv *env, jobject peer_info_handle, jobject devices, jint devices_position);
|
||||
extern jboolean extgl_BindVideoDeviceNV(JNIEnv *env, jobject peer_info_handle, jint video_slot, jlong video_device, jobject attrib_list, jint attrib_list_position);
|
||||
extern jboolean extgl_QueryContextNV(JNIEnv *env, jobject peer_info_handle, jobject context_handle, jint attrib, jobject value, jint value_position);
|
||||
|
||||
/* NV_video_capture functions */
|
||||
extern jboolean extgl_BindVideoCaptureDeviceNV(JNIEnv *env, jobject peer_info_handle, jint video_slot, jlong device);
|
||||
extern jint extgl_EnumerateVideoCaptureDevicesNV(JNIEnv *env, jobject peer_info_handle, jobject devices, jint devices_position);
|
||||
extern jboolean extgl_LockVideoCaptureDeviceNV(JNIEnv *env, jobject peer_info_handle, jlong device);
|
||||
extern jboolean extgl_QueryVideoCaptureDeviceNV(JNIEnv *env, jobject peer_info_handle, jlong device, jint attribute, jobject value, jint value_position);
|
||||
extern jboolean extgl_ReleaseVideoCaptureDeviceNV(JNIEnv *env, jobject peer_info_handle, jlong device);
|
||||
|
||||
#endif
|
|
@ -77,6 +77,17 @@ glXSwapIntervalSGIPROC lwjgl_glXSwapIntervalSGI = NULL;
|
|||
/* GLX_ARB_create_context */
|
||||
glXCreateContextAttribsARBPROC lwjgl_glXCreateContextAttribsARB = NULL;
|
||||
|
||||
/* GLX_NV_present_video */
|
||||
glXEnumerateVideoDevicesNVPROC lwjgl_glXEnumerateVideoDevicesNV = NULL;
|
||||
glXBindVideoDeviceNVPROC lwjgl_glXBindVideoDeviceNV = NULL;
|
||||
|
||||
/* GLX_NV_video_capture */
|
||||
glXBindVideoCaptureDeviceNVPROC lwjgl_glXBindVideoCaptureDeviceNV = NULL;
|
||||
glXEnumerateVideoCaptureDevicesNVPROC lwjgl_glXEnumerateVideoCaptureDevicesNV = NULL;
|
||||
glXLockVideoCaptureDeviceNVPROC lwjgl_glXLockVideoCaptureDeviceNV = NULL;
|
||||
glXQueryVideoCaptureDeviceNVPROC lwjgl_glXQueryVideoCaptureDeviceNV = NULL;
|
||||
glXReleaseVideoCaptureDeviceNVPROC lwjgl_glXReleaseVideoCaptureDeviceNV = NULL;
|
||||
|
||||
static void * lib_gl_handle = NULL;
|
||||
|
||||
typedef void * (APIENTRY * glXGetProcAddressARBPROC) (const GLubyte *procName);
|
||||
|
@ -151,6 +162,27 @@ static void extgl_InitGLXARBCreateContext() {
|
|||
symbols_flags.GLX_ARB_create_context = extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
||||
}
|
||||
|
||||
static void extgl_InitGLXNVPresentVideo() {
|
||||
ExtFunction functions[] = {
|
||||
{ "glXEnumerateVideoDevicesNV", (void*)&lwjgl_glXEnumerateVideoDevicesNV },
|
||||
{ "glXBindVideoDeviceNV", (void*)&lwjgl_glXBindVideoDeviceNV }
|
||||
};
|
||||
|
||||
symbols_flags.GLX_NV_present_video = extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
||||
}
|
||||
|
||||
static void extgl_InitGLXNVVideoCapture() {
|
||||
ExtFunction functions[] = {
|
||||
{ "glXBindVideoCaptureDeviceNV", (void*)&lwjgl_glXBindVideoCaptureDeviceNV },
|
||||
{ "glXEnumerateVideoCaptureDevicesNV", (void*)&lwjgl_glXEnumerateVideoCaptureDevicesNV },
|
||||
{ "glXLockVideoCaptureDeviceNV", (void*)&lwjgl_glXLockVideoCaptureDeviceNV },
|
||||
{ "glXQueryVideoCaptureDeviceNV", (void*)&lwjgl_glXQueryVideoCaptureDeviceNV },
|
||||
{ "glXReleaseVideoCaptureDeviceNV", (void*)&lwjgl_glXReleaseVideoCaptureDeviceNV }
|
||||
};
|
||||
|
||||
symbols_flags.GLX_NV_video_capture = extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
||||
}
|
||||
|
||||
static void extgl_InitGLXSupportedExtensions(Display *disp, int screen, GLXExtensions *extension_flags) {
|
||||
/* extension_flags.GLX_EXT_visual_info = GLXQueryExtension(disp, screen, "GLX_EXT_visual_info");
|
||||
extension_flags.GLX_EXT_visual_rating = GLXQueryExtension(disp, screen, "GLX_EXT_visual_rating");*/
|
||||
|
@ -161,6 +193,8 @@ static void extgl_InitGLXSupportedExtensions(Display *disp, int screen, GLXExten
|
|||
extension_flags->GLX_ARB_framebuffer_sRGB = GLXQueryExtension(disp, screen, "GLX_ARB_framebuffer_sRGB") || GLXQueryExtension(disp, screen, "GLX_EXT_framebuffer_sRGB");
|
||||
extension_flags->GLX_ARB_create_context = GLXQueryExtension(disp, screen, "GLX_ARB_create_context");
|
||||
extension_flags->GLX_NV_multisample_coverage = GLXQueryExtension(disp, screen, "GLX_NV_multisample_coverage");
|
||||
extension_flags->GLX_NV_present_video = GLXQueryExtension(disp, screen, "GLX_NV_present_video");
|
||||
extension_flags->GLX_NV_video_capture = GLXQueryExtension(disp, screen, "GLX_NV_video_capture");
|
||||
}
|
||||
|
||||
bool extgl_Open(JNIEnv *env) {
|
||||
|
@ -193,6 +227,8 @@ bool extgl_Open(JNIEnv *env) {
|
|||
extgl_InitGLX13();
|
||||
extgl_InitGLXSGISwapControl();
|
||||
extgl_InitGLXARBCreateContext();
|
||||
extgl_InitGLXNVPresentVideo();
|
||||
extgl_InitGLXNVVideoCapture();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -272,9 +272,16 @@
|
|||
#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002
|
||||
|
||||
/* GLX_NV_multisample_coverage */
|
||||
#define GLX_COVERAGE_SAMPLES_NV 100001
|
||||
#define GLX_COLOR_SAMPLES_NV 0x20B3
|
||||
#define GLX_COVERAGE_SAMPLES_NV 100001
|
||||
#define GLX_COLOR_SAMPLES_NV 0x20B3
|
||||
|
||||
/* GLX_NV_present_video */
|
||||
#define GLX_NUM_VIDEO_SLOTS_NV 0x20F0
|
||||
|
||||
/* GLX_NV_video_capture */
|
||||
#define GLX_DEVICE_ID_NV 0x20CD
|
||||
#define GLX_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF
|
||||
#define GLX_UNIQUE_ID_NV 0x20CE
|
||||
|
||||
typedef XID GLXContextID;
|
||||
typedef XID GLXPixmap;
|
||||
|
@ -339,6 +346,18 @@ typedef void (APIENTRY * glXSwapIntervalSGIPROC)(int interval);
|
|||
/* GLX_ARB_create_context */
|
||||
typedef GLXContext (APIENTRY * glXCreateContextAttribsARBPROC) (Display *dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int *attrib_list);
|
||||
|
||||
/* GLX_NV_present_video */
|
||||
typedef unsigned int * (APIENTRY * glXEnumerateVideoDevicesNVPROC) (Display *dpy, int screen, int *nelements);
|
||||
typedef int (APIENTRY * glXBindVideoDeviceNVPROC) (Display *dpy, unsigned int video_slot, unsigned int video_device, const int *attrib_list);
|
||||
|
||||
/* GLX_NV_video_capture */
|
||||
typedef XID GLXVideoCaptureDeviceNV;
|
||||
typedef int (APIENTRY * glXBindVideoCaptureDeviceNVPROC) (Display *dpy, unsigned int video_capture_slot, GLXVideoCaptureDeviceNV device);
|
||||
typedef GLXVideoCaptureDeviceNV * (APIENTRY * glXEnumerateVideoCaptureDevicesNVPROC) (Display *dpy, int screen, int *nelements);
|
||||
typedef void (APIENTRY * glXLockVideoCaptureDeviceNVPROC) (Display *dpy, GLXVideoCaptureDeviceNV device);
|
||||
typedef int (APIENTRY * glXQueryVideoCaptureDeviceNVPROC) (Display *dpy, GLXVideoCaptureDeviceNV device, int attribute, int *value);
|
||||
typedef void (APIENTRY * glXReleaseVideoCaptureDeviceNVPROC) (Display *dpy, GLXVideoCaptureDeviceNV device);
|
||||
|
||||
typedef struct {
|
||||
bool GLX12;
|
||||
bool GLX13;
|
||||
|
@ -352,6 +371,8 @@ typedef struct {
|
|||
bool GLX_ARB_framebuffer_sRGB;
|
||||
bool GLX_ARB_create_context;
|
||||
bool GLX_NV_multisample_coverage;
|
||||
bool GLX_NV_present_video;
|
||||
bool GLX_NV_video_capture;
|
||||
} GLXExtensions;
|
||||
|
||||
/* Add _ to global symbols to avoid symbol clash with the OpenGL library */
|
||||
|
@ -399,6 +420,17 @@ extern glXSwapIntervalSGIPROC lwjgl_glXSwapIntervalSGI;
|
|||
|
||||
extern glXCreateContextAttribsARBPROC lwjgl_glXCreateContextAttribsARB;
|
||||
|
||||
/* GLX_NV_present_video */
|
||||
extern glXEnumerateVideoDevicesNVPROC lwjgl_glXEnumerateVideoDevicesNV;
|
||||
extern glXBindVideoDeviceNVPROC lwjgl_glXBindVideoDeviceNV;
|
||||
|
||||
/* GLX_NV_video_capture */
|
||||
extern glXBindVideoCaptureDeviceNVPROC lwjgl_glXBindVideoCaptureDeviceNV;
|
||||
extern glXEnumerateVideoCaptureDevicesNVPROC lwjgl_glXEnumerateVideoCaptureDevicesNV;
|
||||
extern glXLockVideoCaptureDeviceNVPROC lwjgl_glXLockVideoCaptureDeviceNV;
|
||||
extern glXQueryVideoCaptureDeviceNVPROC lwjgl_glXQueryVideoCaptureDeviceNV;
|
||||
extern glXReleaseVideoCaptureDeviceNVPROC lwjgl_glXReleaseVideoCaptureDeviceNV;
|
||||
|
||||
extern bool extgl_InitGLX(Display *disp, int screen, GLXExtensions *extension_flags);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -0,0 +1,95 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2011 LWJGL 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 'LWJGL' 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* WGL extension implementations.
|
||||
*
|
||||
* @author Spasi
|
||||
*/
|
||||
#include "WGL.h"
|
||||
|
||||
/* NV_present_video functions */
|
||||
|
||||
jint extgl_EnumerateVideoDevicesNV(JNIEnv *env, jobject peer_info_handle, jobject devices, jint devices_position) {
|
||||
WindowsPeerInfo *peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
HVIDEOOUTPUTDEVICENV *devices_address = ((HVIDEOOUTPUTDEVICENV *)safeGetBufferAddress(env, devices)) + devices_position;
|
||||
|
||||
return peer_info->extensions.wglEnumerateVideoDevicesNV(peer_info->drawable_hdc, devices_address);
|
||||
}
|
||||
|
||||
jboolean extgl_BindVideoDeviceNV(JNIEnv *env, jobject peer_info_handle, jint video_slot, jlong video_device, jobject attrib_list, jint attrib_list_position) {
|
||||
WindowsPeerInfo *peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
const int *attrib_list_address = ((const int *)safeGetBufferAddress(env, attrib_list)) + attrib_list_position;
|
||||
|
||||
return peer_info->extensions.wglBindVideoDeviceNV(peer_info->drawable_hdc, video_slot, video_device == 0 ? INVALID_HANDLE_VALUE : (HVIDEOOUTPUTDEVICENV)(intptr_t)video_device, attrib_list_address);
|
||||
}
|
||||
|
||||
jboolean extgl_QueryContextNV(JNIEnv *env, jobject peer_info_handle, jobject context_handle, jint attrib, jobject value, jint value_position) {
|
||||
WindowsPeerInfo *peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
int *value_address = ((int *)(*env)->GetDirectBufferAddress(env, value)) + value_position;
|
||||
|
||||
return peer_info->extensions.wglQueryCurrentContextNV(attrib, value_address);
|
||||
}
|
||||
|
||||
/* NV_video_capture functions */
|
||||
|
||||
jboolean extgl_BindVideoCaptureDeviceNV(JNIEnv *env, jobject peer_info_handle, jint video_slot, jlong device) {
|
||||
WindowsPeerInfo *peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
|
||||
return peer_info->extensions.wglBindVideoCaptureDeviceNV(video_slot, (HVIDEOINPUTDEVICENV)(intptr_t)device);
|
||||
}
|
||||
|
||||
jint extgl_EnumerateVideoCaptureDevicesNV(JNIEnv *env, jobject peer_info_handle, jobject devices, jint devices_position) {
|
||||
WindowsPeerInfo *peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
HVIDEOINPUTDEVICENV *devices_address = ((HVIDEOINPUTDEVICENV *)safeGetBufferAddress(env, devices)) + devices_position;
|
||||
|
||||
return peer_info->extensions.wglEnumerateVideoCaptureDevicesNV(peer_info->drawable_hdc, devices_address);
|
||||
}
|
||||
|
||||
jboolean extgl_LockVideoCaptureDeviceNV(JNIEnv *env, jobject peer_info_handle, jlong device) {
|
||||
WindowsPeerInfo *peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
|
||||
return peer_info->extensions.wglLockVideoCaptureDeviceNV(peer_info->drawable_hdc, (HVIDEOINPUTDEVICENV)(intptr_t)device);
|
||||
}
|
||||
|
||||
jboolean extgl_QueryVideoCaptureDeviceNV(JNIEnv *env, jobject peer_info_handle, jlong device, jint attribute, jobject value, jint value_position) {
|
||||
WindowsPeerInfo *peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
int *value_address = ((int *)(*env)->GetDirectBufferAddress(env, value)) + value_position;
|
||||
|
||||
return peer_info->extensions.wglQueryVideoCaptureDeviceNV(peer_info->drawable_hdc, (HVIDEOINPUTDEVICENV)(intptr_t)device, attribute, value_address);
|
||||
}
|
||||
|
||||
jboolean extgl_ReleaseVideoCaptureDeviceNV(JNIEnv *env, jobject peer_info_handle, jlong device) {
|
||||
WindowsPeerInfo *peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
|
||||
return peer_info->extensions.wglReleaseVideoCaptureDeviceNV(peer_info->drawable_hdc, (HVIDEOINPUTDEVICENV)(intptr_t)device);
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2011 LWJGL 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 'LWJGL' 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* WGL extension implementations.
|
||||
*
|
||||
* @author Spasi
|
||||
*/
|
||||
#ifndef __LWJGL_WGL_H
|
||||
#define __LWJGL_WGL_H
|
||||
|
||||
#include <jni.h>
|
||||
#include "common_tools.h"
|
||||
#include "context.h"
|
||||
|
||||
#include "extgl.h"
|
||||
#include "extgl_wgl.h"
|
||||
|
||||
/* NV_present_video functions */
|
||||
extern jint extgl_EnumerateVideoDevicesNV(JNIEnv *env, jobject peer_info_handle, jobject devices, jint devices_position);
|
||||
extern jboolean extgl_BindVideoDeviceNV(JNIEnv *env, jobject peer_info_handle, jint video_slot, jlong video_device, jobject attrib_list, jint attrib_list_position);
|
||||
extern jboolean extgl_QueryContextNV(JNIEnv *env, jobject peer_info_handle, jobject context_handle, jint attrib, jobject value, jint value_position);
|
||||
|
||||
/* NV_video_capture functions */
|
||||
extern jboolean extgl_BindVideoCaptureDeviceNV(JNIEnv *env, jobject peer_info_handle, jint video_slot, jlong device);
|
||||
extern jint extgl_EnumerateVideoCaptureDevicesNV(JNIEnv *env, jobject peer_info_handle, jobject devices, jint devices_position);
|
||||
extern jboolean extgl_LockVideoCaptureDeviceNV(JNIEnv *env, jobject peer_info_handle, jlong device);
|
||||
extern jboolean extgl_QueryVideoCaptureDeviceNV(JNIEnv *env, jobject peer_info_handle, jlong device, jint attribute, jobject value, jint value_position);
|
||||
extern jboolean extgl_ReleaseVideoCaptureDeviceNV(JNIEnv *env, jobject peer_info_handle, jlong device);
|
||||
|
||||
#endif
|
|
@ -1,31 +1,31 @@
|
|||
/*
|
||||
/*
|
||||
* Copyright (c) 2002-2008 LWJGL Project
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
*
|
||||
* * 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 'LWJGL' nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* * Neither the name of 'LWJGL' 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
|
||||
* 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
|
||||
* 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.
|
||||
*/
|
||||
|
@ -49,14 +49,10 @@
|
|||
typedef struct {
|
||||
union {
|
||||
HWND hwnd;
|
||||
struct {
|
||||
HPBUFFERARB pbuffer;
|
||||
// Contains the function pointers that
|
||||
// created the pbuffer
|
||||
WGLExtensions extensions;
|
||||
} pbuffer;
|
||||
HPBUFFERARB pbuffer;
|
||||
} u;
|
||||
HDC drawable_hdc;
|
||||
WGLExtensions extensions;
|
||||
} WindowsPeerInfo;
|
||||
|
||||
/*
|
||||
|
@ -86,7 +82,7 @@ extern void getWindowFlags(DWORD *windowflags_return, DWORD *exstyle_return, boo
|
|||
* Create a window with the specified position, size, and
|
||||
* fullscreen attribute. The window will have DirectInput associated
|
||||
* with it.
|
||||
*
|
||||
*
|
||||
* Returns true for success, or false for failure
|
||||
*/
|
||||
extern HWND createWindow(LPCTSTR window_class_name, int x, int y, int width, int height, bool undecorated, bool child_window, HWND parent);
|
||||
|
|
|
@ -84,6 +84,8 @@ static bool WGLQueryExtension(WGLExtensions *extensions, const char *name) {
|
|||
return extgl_QueryExtension(extension_string, name);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------*/
|
||||
|
||||
static void extgl_InitWGLARBPbuffer(WGLExtensions *extensions) {
|
||||
ExtFunction functions[] = {
|
||||
{"wglCreatePbufferARB", (void *)&extensions->wglCreatePbufferARB},
|
||||
|
@ -137,6 +139,32 @@ static void extgl_InitWGLARBCreateContext(WGLExtensions *extensions) {
|
|||
extensions->WGL_ARB_create_context = extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
||||
}
|
||||
|
||||
static void extgl_InitWGLNVPresentVideo(WGLExtensions *extensions) {
|
||||
ExtFunction functions[] = {
|
||||
{"wglEnumerateVideoDevicesNV", (void *)&extensions->wglEnumerateVideoDevicesNV},
|
||||
{"wglBindVideoDeviceNV", (void *)&extensions->wglBindVideoDeviceNV},
|
||||
{"wglQueryCurrentContextNV", (void *)&extensions->wglQueryCurrentContextNV}
|
||||
};
|
||||
|
||||
if (extensions->WGL_NV_present_video)
|
||||
extensions->WGL_NV_present_video = extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
||||
}
|
||||
|
||||
static void extgl_InitWGLNVVideoCapture(WGLExtensions *extensions) {
|
||||
ExtFunction functions[] = {
|
||||
{"wglBindVideoCaptureDeviceNV", (void *)&extensions->wglBindVideoCaptureDeviceNV},
|
||||
{"wglEnumerateVideoCaptureDevicesNV", (void *)&extensions->wglEnumerateVideoCaptureDevicesNV},
|
||||
{"wglLockVideoCaptureDeviceNV", (void *)&extensions->wglLockVideoCaptureDeviceNV},
|
||||
{"wglQueryVideoCaptureDeviceNV", (void *)&extensions->wglQueryVideoCaptureDeviceNV},
|
||||
{"wglReleaseVideoCaptureDeviceNV", (void *)&extensions->wglReleaseVideoCaptureDeviceNV}
|
||||
};
|
||||
|
||||
if (extensions->WGL_NV_video_capture)
|
||||
extensions->WGL_NV_video_capture = extgl_InitializeFunctions(sizeof(functions)/sizeof(ExtFunction), functions);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------*/
|
||||
|
||||
static void extgl_InitSupportedWGLExtensions(WGLExtensions *extensions) {
|
||||
extensions->WGL_ARB_buffer_region = WGLQueryExtension(extensions, "WGL_ARB_buffer_region");
|
||||
extensions->WGL_ARB_make_current_read = WGLQueryExtension(extensions, "WGL_ARB_make_current_read");
|
||||
|
@ -153,6 +181,8 @@ static void extgl_InitSupportedWGLExtensions(WGLExtensions *extensions) {
|
|||
extensions->WGL_EXT_pixel_format_packed_float = WGLQueryExtension(extensions, "WGL_EXT_pixel_format_packed_float");
|
||||
extensions->WGL_ARB_create_context = WGLQueryExtension(extensions, "WGL_ARB_create_context");
|
||||
extensions->WGL_NV_multisample_coverage = WGLQueryExtension(extensions, "WGL_NV_multisample_coverage");
|
||||
extensions->WGL_NV_present_video = WGLQueryExtension(extensions, "WGL_NV_present_video");
|
||||
extensions->WGL_NV_video_capture = WGLQueryExtension(extensions, "WGL_NV_video_capture");
|
||||
}
|
||||
|
||||
static void extgl_InitWGLEXTExtensionsString(WGLExtensions *extensions) {
|
||||
|
@ -181,4 +211,6 @@ void extgl_InitWGL(WGLExtensions *extensions) {
|
|||
extgl_InitWGLARBPixelFormat(extensions);
|
||||
extgl_InitWGLARBPbuffer(extensions);
|
||||
extgl_InitWGLARBCreateContext(extensions);
|
||||
extgl_InitWGLNVPresentVideo(extensions);
|
||||
extgl_InitWGLNVVideoCapture(extensions);
|
||||
}
|
||||
|
|
|
@ -207,6 +207,32 @@ typedef HGLRC (APIENTRY * wglCreateContextAttribsARBPROC) (HDC hDC, HGLRC hShare
|
|||
#define WGL_COVERAGE_SAMPLES_NV 0x2042
|
||||
#define WGL_COLOR_SAMPLES_NV 0x20B9
|
||||
|
||||
/*--------------------------------------------------------------*/
|
||||
/*------------ WGL_NV_present_video ----------------------------*/
|
||||
/*--------------------------------------------------------------*/
|
||||
|
||||
DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV);
|
||||
|
||||
#define WGL_NUM_VIDEO_SLOTS_NV 0x20F0
|
||||
|
||||
typedef int (APIENTRY * wglEnumerateVideoDevicesNVPROC) (HDC hDc, HVIDEOOUTPUTDEVICENV *phDeviceList);
|
||||
typedef BOOL (APIENTRY * wglBindVideoDeviceNVPROC) (HDC hDc, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int *piAttribList);
|
||||
typedef BOOL (APIENTRY * wglQueryCurrentContextNVPROC) (int iAttribute, int *piValue);
|
||||
|
||||
/*--------------------------------------------------------------*/
|
||||
/*------------ WGL_NV_video_capture ----------------------------*/
|
||||
/*--------------------------------------------------------------*/
|
||||
|
||||
DECLARE_HANDLE(HVIDEOINPUTDEVICENV);
|
||||
|
||||
#define WGL_NUM_VIDEO_SLOTS_NV 0x20F0
|
||||
|
||||
typedef BOOL (APIENTRY * wglBindVideoCaptureDeviceNVPROC) (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice);
|
||||
typedef UINT (APIENTRY * wglEnumerateVideoCaptureDevicesNVPROC) (HDC hDc, HVIDEOINPUTDEVICENV *phDeviceList);
|
||||
typedef BOOL (APIENTRY * wglLockVideoCaptureDeviceNVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
|
||||
typedef BOOL (APIENTRY * wglQueryVideoCaptureDeviceNVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int *piValue);
|
||||
typedef BOOL (APIENTRY * wglReleaseVideoCaptureDeviceNVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
|
||||
|
||||
/*---------------------------------------------------------------------*/
|
||||
|
||||
typedef struct {
|
||||
|
@ -227,6 +253,8 @@ typedef struct {
|
|||
bool WGL_EXT_pixel_format_packed_float;
|
||||
bool WGL_ARB_create_context;
|
||||
bool WGL_NV_multisample_coverage;
|
||||
bool WGL_NV_present_video;
|
||||
bool WGL_NV_video_capture;
|
||||
|
||||
wglGetExtensionsStringEXTPROC wglGetExtensionsStringEXT;
|
||||
|
||||
|
@ -253,6 +281,16 @@ typedef struct {
|
|||
wglGetCurrentReadDCARBPROC wglGetCurrentReadDCARB;
|
||||
|
||||
wglCreateContextAttribsARBPROC wglCreateContextAttribsARB;
|
||||
|
||||
wglEnumerateVideoDevicesNVPROC wglEnumerateVideoDevicesNV;
|
||||
wglBindVideoDeviceNVPROC wglBindVideoDeviceNV;
|
||||
wglQueryCurrentContextNVPROC wglQueryCurrentContextNV;
|
||||
|
||||
wglBindVideoCaptureDeviceNVPROC wglBindVideoCaptureDeviceNV;
|
||||
wglEnumerateVideoCaptureDevicesNVPROC wglEnumerateVideoCaptureDevicesNV;
|
||||
wglLockVideoCaptureDeviceNVPROC wglLockVideoCaptureDeviceNV;
|
||||
wglQueryVideoCaptureDeviceNVPROC wglQueryVideoCaptureDeviceNV;
|
||||
wglReleaseVideoCaptureDeviceNVPROC wglReleaseVideoCaptureDeviceNV;
|
||||
} WGLExtensions;
|
||||
|
||||
extern void extgl_InitWGL(WGLExtensions *extensions);
|
||||
|
|
|
@ -167,23 +167,23 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_WindowsPbufferPeerInfo_nCreate
|
|||
throwException(env, "Could not get Pbuffer DC");
|
||||
return;
|
||||
}
|
||||
peer_info->u.pbuffer.extensions = extensions;
|
||||
peer_info->u.pbuffer.pbuffer = Pbuffer;
|
||||
peer_info->extensions = extensions;
|
||||
peer_info->u.pbuffer = Pbuffer;
|
||||
peer_info->drawable_hdc = Pbuffer_dc;
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_WindowsPbufferPeerInfo_nDestroy
|
||||
(JNIEnv *env, jclass clazz, jobject peer_info_handle) {
|
||||
WindowsPeerInfo *peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
peer_info->u.pbuffer.extensions.wglReleasePbufferDCARB(peer_info->u.pbuffer.pbuffer, peer_info->drawable_hdc);
|
||||
peer_info->u.pbuffer.extensions.wglDestroyPbufferARB(peer_info->u.pbuffer.pbuffer);
|
||||
peer_info->extensions.wglReleasePbufferDCARB(peer_info->u.pbuffer, peer_info->drawable_hdc);
|
||||
peer_info->extensions.wglDestroyPbufferARB(peer_info->u.pbuffer);
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_org_lwjgl_opengl_WindowsPbufferPeerInfo_nIsBufferLost
|
||||
(JNIEnv *env, jclass clazz, jobject peer_info_handle) {
|
||||
WindowsPeerInfo *peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
BOOL buffer_lost;
|
||||
peer_info->u.pbuffer.extensions.wglQueryPbufferARB(peer_info->u.pbuffer.pbuffer, WGL_PBUFFER_LOST_ARB, &buffer_lost);
|
||||
peer_info->extensions.wglQueryPbufferARB(peer_info->u.pbuffer, WGL_PBUFFER_LOST_ARB, &buffer_lost);
|
||||
return buffer_lost ? JNI_TRUE : JNI_FALSE;
|
||||
}
|
||||
|
||||
|
@ -196,17 +196,17 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_WindowsPbufferPeerInfo_nSetPbufferA
|
|||
attribs[1] = value;
|
||||
attribs[2] = 0;
|
||||
|
||||
peer_info->u.pbuffer.extensions.wglSetPbufferAttribARB(peer_info->u.pbuffer.pbuffer, attribs);
|
||||
peer_info->extensions.wglSetPbufferAttribARB(peer_info->u.pbuffer, attribs);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_WindowsPbufferPeerInfo_nBindTexImageToPbuffer
|
||||
(JNIEnv *env, jclass clazz, jobject peer_info_handle, jint buffer) {
|
||||
WindowsPeerInfo *peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
peer_info->u.pbuffer.extensions.wglBindTexImageARB(peer_info->u.pbuffer.pbuffer, buffer);
|
||||
peer_info->extensions.wglBindTexImageARB(peer_info->u.pbuffer, buffer);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_WindowsPbufferPeerInfo_nReleaseTexImageFromPbuffer
|
||||
(JNIEnv *env, jclass clazz, jobject peer_info_handle, jint buffer) {
|
||||
WindowsPeerInfo *peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
peer_info->u.pbuffer.extensions.wglReleaseTexImageARB(peer_info->u.pbuffer.pbuffer, buffer);
|
||||
peer_info->extensions.wglReleaseTexImageARB(peer_info->u.pbuffer, buffer);
|
||||
}
|
||||
|
|
|
@ -90,6 +90,7 @@ JNIEXPORT jobject JNICALL Java_org_lwjgl_opengl_WindowsContextImplementation_nCr
|
|||
return NULL;
|
||||
}
|
||||
extgl_InitWGL(&extensions);
|
||||
peer_info->extensions = extensions;
|
||||
|
||||
// Restore previous context
|
||||
wglMakeCurrent(saved_current_hdc, saved_current_hglrc);
|
||||
|
@ -127,7 +128,7 @@ JNIEXPORT jlong JNICALL Java_org_lwjgl_opengl_WindowsContextImplementation_getHG
|
|||
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_opengl_WindowsContextImplementation_getHDC(JNIEnv *env, jclass clazz, jobject peer_info_handle) {
|
||||
WindowsPeerInfo *peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
return (intptr_t)peer_info->drawable_hdc;
|
||||
return (intptr_t)peer_info->drawable_hdc;
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_WindowsContextImplementation_nSwapBuffers
|
||||
|
|
|
@ -44,19 +44,10 @@
|
|||
#include <jni.h>
|
||||
#include "common_tools.h"
|
||||
#include "extgl.h"
|
||||
/*#include "extgl_wgl.h"*/
|
||||
|
||||
typedef struct {
|
||||
union {
|
||||
HWND hwnd;
|
||||
/*
|
||||
struct {
|
||||
HPBUFFERARB pbuffer;
|
||||
// Contains the function pointers that
|
||||
// created the pbuffer
|
||||
WGLExtensions extensions;
|
||||
} pbuffer;
|
||||
*/
|
||||
} u;
|
||||
HDC drawable_hdc;
|
||||
} WindowsPeerInfo;
|
||||
|
|
|
@ -0,0 +1,116 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2008 LWJGL 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 'LWJGL' 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.
|
||||
*/
|
||||
package org.lwjgl.opengl;
|
||||
|
||||
import org.lwjgl.util.generator.Alternate;
|
||||
import org.lwjgl.util.generator.Check;
|
||||
import org.lwjgl.util.generator.OutParameter;
|
||||
import org.lwjgl.util.generator.StripPostfix;
|
||||
import org.lwjgl.util.generator.opengl.*;
|
||||
|
||||
import java.nio.IntBuffer;
|
||||
import java.nio.LongBuffer;
|
||||
|
||||
public interface NV_present_video {
|
||||
|
||||
/**
|
||||
* Accepted by the <type> parameter of PresentFrameKeyedNV and
|
||||
* PresentFrameDualFillNV:
|
||||
*/
|
||||
int GL_FRAME_NV = 0x8E26,
|
||||
FIELDS_NV = 0x8E27;
|
||||
|
||||
/**
|
||||
* Accepted by the <pname> parameter of GetVideoivNV, GetVideouivNV,
|
||||
* GetVideoi64vNV, GetVideoui64vNV:
|
||||
*/
|
||||
int GL_CURRENT_TIME_NV = 0x8E28,
|
||||
GL_NUM_FILL_STREAMS_NV = 0x8E29;
|
||||
|
||||
/** Accepted by the <target> parameter of GetQueryiv: */
|
||||
int GL_PRESENT_TIME_NV = 0x8E2A,
|
||||
GL_PRESENT_DURATION_NV = 0x8E2B;
|
||||
|
||||
/** Accepted by the <attribute> parameter of NVPresentVideoUtil.glQueryContextNV: */
|
||||
int GL_NUM_VIDEO_SLOTS_NV = 0x20F0; // GLX_NUM_VIDEO_SLOTS_NV & WGL_NUM_VIDEO_SLOTS_NV
|
||||
|
||||
void glPresentFrameKeyedNV(@GLuint int video_slot,
|
||||
@GLuint64EXT long minPresentTime,
|
||||
@GLuint int beginPresentTimeId,
|
||||
@GLuint int presentDurationId,
|
||||
@GLenum int type,
|
||||
@GLenum int target0, @GLuint int fill0, @GLuint int key0,
|
||||
@GLenum int target1, @GLuint int fill1, @GLuint int key1);
|
||||
|
||||
void glPresentFrameDualFillNV(@GLuint int video_slot,
|
||||
@GLuint64EXT long minPresentTime,
|
||||
@GLuint int beginPresentTimeId,
|
||||
@GLuint int presentDurationId,
|
||||
@GLenum int type,
|
||||
@GLenum int target0, @GLuint int fill0,
|
||||
@GLenum int target1, @GLuint int fill1,
|
||||
@GLenum int target2, @GLuint int fill2,
|
||||
@GLenum int target3, @GLuint int fill3);
|
||||
|
||||
@StripPostfix("params")
|
||||
void glGetVideoivNV(@GLuint int video_slot, @GLenum int pname, @OutParameter @Check("1") IntBuffer params);
|
||||
|
||||
@Alternate("glGetVideoivNV")
|
||||
@GLreturn("params")
|
||||
@StripPostfix("params")
|
||||
void glGetVideoivNV2(@GLuint int video_slot, @GLenum int pname, @OutParameter IntBuffer params);
|
||||
|
||||
@StripPostfix("params")
|
||||
void glGetVideouivNV(@GLuint int video_slot, @GLenum int pname, @OutParameter @Check("1") @GLuint IntBuffer params);
|
||||
|
||||
@Alternate("glGetVideouivNV")
|
||||
@GLreturn("params")
|
||||
@StripPostfix("params")
|
||||
void glGetVideouivNV2(@GLuint int video_slot, @GLenum int pname, @OutParameter @GLuint IntBuffer params);
|
||||
|
||||
@StripPostfix("params")
|
||||
void glGetVideoi64vNV(@GLuint int video_slot, @GLenum int pname, @OutParameter @Check("1") @GLint64EXT LongBuffer params);
|
||||
|
||||
@Alternate("glGetVideoi64vNV")
|
||||
@GLreturn("params")
|
||||
@StripPostfix(value = "params", postfix = "v")
|
||||
void glGetVideoi64vNV2(@GLuint int video_slot, @GLenum int pname, @OutParameter @GLint64EXT LongBuffer params);
|
||||
|
||||
@StripPostfix("params")
|
||||
void glGetVideoui64vNV(@GLuint int video_slot, @GLenum int pname, @OutParameter @Check("1") @GLuint64EXT LongBuffer params);
|
||||
|
||||
@Alternate("glGetVideoui64vNV")
|
||||
@GLreturn("params")
|
||||
@StripPostfix(value = "params", postfix = "v")
|
||||
void glGetVideoui64vNV2(@GLuint int video_slot, @GLenum int pname, @OutParameter @GLuint64EXT LongBuffer params);
|
||||
|
||||
}
|
|
@ -0,0 +1,201 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2008 LWJGL 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 'LWJGL' 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.
|
||||
*/
|
||||
package org.lwjgl.opengl;
|
||||
|
||||
import org.lwjgl.util.generator.*;
|
||||
import org.lwjgl.util.generator.opengl.*;
|
||||
|
||||
import java.nio.DoubleBuffer;
|
||||
import java.nio.FloatBuffer;
|
||||
import java.nio.IntBuffer;
|
||||
import java.nio.LongBuffer;
|
||||
|
||||
public interface NV_video_capture {
|
||||
|
||||
/**
|
||||
* Accepted by the <target> parameters of BindBufferARB, BufferDataARB,
|
||||
* BufferSubDataARB, MapBufferARB, UnmapBufferARB, GetBufferSubDataARB,
|
||||
* GetBufferParameterivARB, and GetBufferPointervARB:
|
||||
*/
|
||||
int GL_VIDEO_BUFFER_NV = 0x9020;
|
||||
|
||||
/**
|
||||
* Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
|
||||
* GetFloatv, and GetDoublev:
|
||||
*/
|
||||
int GL_VIDEO_BUFFER_BINDING_NV = 0x9021;
|
||||
|
||||
/**
|
||||
* Accepted by the <frame_region> parameter of
|
||||
* BindVideoCaptureStreamBufferNV, and BindVideoCaptureStreamTextureNV:
|
||||
*/
|
||||
int GL_FIELD_UPPER_NV = 0x9022,
|
||||
GL_FIELD_LOWER_NV = 0x9023;
|
||||
|
||||
/** Accepted by the <pname> parameter of GetVideoCaptureivNV: */
|
||||
int GL_NUM_VIDEO_CAPTURE_STREAMS_NV = 0x9024,
|
||||
GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV = 0x9025;
|
||||
|
||||
/**
|
||||
* Accepted by the <pname> parameter of
|
||||
* GetVideoCaptureStream{i,f,d}vNV:
|
||||
*/
|
||||
int GL_LAST_VIDEO_CAPTURE_STATUS_NV = 0x9027,
|
||||
GL_VIDEO_BUFFER_PITCH_NV = 0x9028,
|
||||
GL_VIDEO_CAPTURE_FRAME_WIDTH_NV = 0x9038,
|
||||
GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV = 0x9039,
|
||||
GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV = 0x903A,
|
||||
GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV = 0x903B,
|
||||
GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV = 0x9026;
|
||||
|
||||
/**
|
||||
* Accepted by the <pname> parameter of
|
||||
* GetVideoCaptureStream{i,f,d}vNV and as the <pname> parameter of
|
||||
* VideoCaptureStreamParameter{i,f,d}vNV:
|
||||
*/
|
||||
int GL_VIDEO_COLOR_CONVERSION_MATRIX_NV = 0x9029,
|
||||
GL_VIDEO_COLOR_CONVERSION_MAX_NV = 0x902A,
|
||||
GL_VIDEO_COLOR_CONVERSION_MIN_NV = 0x902B,
|
||||
GL_VIDEO_COLOR_CONVERSION_OFFSET_NV = 0x902C,
|
||||
GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV = 0x902D,
|
||||
GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV = 0x903C;
|
||||
/** Returned by VideoCaptureNV: */
|
||||
int GL_PARTIAL_SUCCESS_NV = 0x902E;
|
||||
|
||||
/**
|
||||
* Returned by VideoCaptureNV and GetVideoCaptureStream{i,f,d}vNV
|
||||
* when <pname> is LAST_VIDEO_CAPTURE_STATUS_NV:
|
||||
*/
|
||||
int GL_SUCCESS_NV = 0x902F,
|
||||
GL_FAILURE_NV = 0x9030;
|
||||
|
||||
/**
|
||||
* Accepted in the <params> parameter of
|
||||
* VideoCaptureStreamParameter{i,f,d}vNV when <pname> is
|
||||
* VIDEO_BUFFER_INTERNAL_FORMAT_NV and returned by
|
||||
* GetVideoCaptureStream{i,f,d}vNV when <pname> is
|
||||
* VIDEO_BUFFER_INTERNAL_FORMAT_NV:
|
||||
*/
|
||||
int GL_YCBYCR8_422_NV = 0x9031,
|
||||
GL_YCBAYCR8A_4224_NV = 0x9032,
|
||||
GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV = 0x9033,
|
||||
GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV = 0x9034,
|
||||
GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV = 0x9035,
|
||||
GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV = 0x9036,
|
||||
GL_Z4Y12Z4CB12Z4CR12_444_NV = 0x9037;
|
||||
|
||||
/*
|
||||
* Accepted in the attribute list of the GLX reply to the
|
||||
* glXEnumerateVideoCaptureDevicesNV command:
|
||||
*/
|
||||
/*int GLX_DEVICE_ID_NV = 0x20CD;*/
|
||||
|
||||
/** Accepted by the <attribute> parameter of NVPresentVideoUtil.glQueryContextNV: */
|
||||
int GL_NUM_VIDEO_CAPTURE_SLOTS_NV = 0x20CF;
|
||||
|
||||
/**
|
||||
* Accepted by the <attribute> parameter of
|
||||
* glQueryVideoCaptureDeviceNV:
|
||||
*/
|
||||
int GL_UNIQUE_ID_NV = 0x20CE;
|
||||
|
||||
void glBeginVideoCaptureNV(@GLuint int video_capture_slot);
|
||||
|
||||
void glBindVideoCaptureStreamBufferNV(@GLuint int video_capture_slot,
|
||||
@GLuint int stream, @GLenum int frame_region,
|
||||
@GLintptrARB long offset);
|
||||
|
||||
void glBindVideoCaptureStreamTextureNV(@GLuint int video_capture_slot,
|
||||
@GLuint int stream, @GLenum int frame_region,
|
||||
@GLenum int target, @GLuint int texture);
|
||||
|
||||
void glEndVideoCaptureNV(@GLuint int video_capture_slot);
|
||||
|
||||
@StripPostfix("params")
|
||||
void glGetVideoCaptureivNV(@GLuint int video_capture_slot, @GLenum int pname, @OutParameter @Check("1") IntBuffer params);
|
||||
|
||||
@Alternate("glGetVideoCaptureivNV")
|
||||
@GLreturn("params")
|
||||
@StripPostfix("params")
|
||||
void glGetVideoCaptureivNV2(@GLuint int video_capture_slot, @GLenum int pname, @OutParameter IntBuffer params);
|
||||
|
||||
@StripPostfix("params")
|
||||
void glGetVideoCaptureStreamivNV(@GLuint int video_capture_slot,
|
||||
@GLuint int stream, @GLenum int pname,
|
||||
@OutParameter @Check("1") IntBuffer params);
|
||||
|
||||
@Alternate("glGetVideoCaptureStreamivNV")
|
||||
@GLreturn("params")
|
||||
@StripPostfix(value = "params", postfix = "v")
|
||||
void glGetVideoCaptureStreamivNV2(@GLuint int video_capture_slot,
|
||||
@GLuint int stream, @GLenum int pname,
|
||||
@OutParameter IntBuffer params);
|
||||
|
||||
@StripPostfix("params")
|
||||
void glGetVideoCaptureStreamfvNV(@GLuint int video_capture_slot,
|
||||
@GLuint int stream, @GLenum int pname,
|
||||
@OutParameter @Check("1") FloatBuffer params);
|
||||
|
||||
@Alternate("glGetVideoCaptureStreamfvNV")
|
||||
@GLreturn("params")
|
||||
@StripPostfix(value = "params", postfix = "v")
|
||||
void glGetVideoCaptureStreamfvNV2(@GLuint int video_capture_slot,
|
||||
@GLuint int stream, @GLenum int pname,
|
||||
@OutParameter FloatBuffer params);
|
||||
|
||||
@StripPostfix("params")
|
||||
void glGetVideoCaptureStreamdvNV(@GLuint int video_capture_slot,
|
||||
@GLuint int stream, @GLenum int pname,
|
||||
@OutParameter @Check("1") DoubleBuffer params);
|
||||
|
||||
@Alternate("glGetVideoCaptureStreamdvNV")
|
||||
@GLreturn("params")
|
||||
@StripPostfix(value = "params", postfix = "v")
|
||||
void glGetVideoCaptureStreamdvNV2(@GLuint int video_capture_slot,
|
||||
@GLuint int stream, @GLenum int pname,
|
||||
@OutParameter DoubleBuffer params);
|
||||
|
||||
@GLenum
|
||||
int glVideoCaptureNV(@GLuint int video_capture_slot,
|
||||
@OutParameter @Check("1") @GLuint IntBuffer sequence_num,
|
||||
@OutParameter @Check("1") @GLuint64EXT LongBuffer capture_time);
|
||||
|
||||
@StripPostfix("params")
|
||||
void glVideoCaptureStreamParameterivNV(@GLuint int video_capture_slot, @GLuint int stream, @GLenum int pname, @Const @Check("16") IntBuffer params);
|
||||
|
||||
@StripPostfix("params")
|
||||
void glVideoCaptureStreamParameterfvNV(@GLuint int video_capture_slot, @GLuint int stream, @GLenum int pname, @Const @Check("16") FloatBuffer params);
|
||||
|
||||
@StripPostfix("params")
|
||||
void glVideoCaptureStreamParameterdvNV(@GLuint int video_capture_slot, @GLuint int stream, @GLenum int pname, @Const @Check("16") DoubleBuffer params);
|
||||
|
||||
}
|
Loading…
Reference in New Issue