mirror of
https://github.com/shadowfacts/lwjgl2-arm64.git
synced 2026-04-21 06:14:10 +00:00
Added support for single primitive input/output parameters.
This commit is contained in:
parent
e97e601894
commit
94a4c50a83
63 changed files with 1309 additions and 444 deletions
|
|
@ -31,17 +31,13 @@
|
|||
*/
|
||||
package org.lwjgl.test.opengl;
|
||||
|
||||
import org.lwjgl.BufferUtils;
|
||||
import org.lwjgl.LWJGLException;
|
||||
import org.lwjgl.Sys;
|
||||
import org.lwjgl.opengl.*;
|
||||
|
||||
import java.nio.IntBuffer;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* @author spasi <spasi@users.sourceforge.net>
|
||||
*/
|
||||
/** @author spasi <spasi@users.sourceforge.net> */
|
||||
public final class SyncTest {
|
||||
|
||||
private SyncTest() {
|
||||
|
|
@ -131,9 +127,7 @@ public final class SyncTest {
|
|||
System.out.println("Unexpected wait status: 0x" + Integer.toHexString(status));
|
||||
}
|
||||
|
||||
IntBuffer property = BufferUtils.createIntBuffer(1);
|
||||
GL32.glGetSync(sync, GL32.GL_SYNC_STATUS, null, property);
|
||||
System.out.println("Sync Status: " + (property.get(0) == GL32.GL_UNSIGNALED ? "UNSIGNALED" : "SIGNALED"));
|
||||
System.out.println("Sync Status: " + (GL32.glGetSync(sync, GL32.GL_SYNC_STATUS) == GL32.GL_UNSIGNALED ? "UNSIGNALED" : "SIGNALED"));
|
||||
|
||||
GL32.glDeleteSync(sync);
|
||||
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@ package org.lwjgl.test.opengl;
|
|||
import java.nio.ByteBuffer;
|
||||
import java.nio.ByteOrder;
|
||||
import java.nio.FloatBuffer;
|
||||
import java.nio.IntBuffer;
|
||||
|
||||
import org.lwjgl.Sys;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
|
|
@ -191,9 +190,7 @@ public final class VBOTest {
|
|||
System.out.println("ARB VBO not supported!");
|
||||
System.exit(1);
|
||||
}
|
||||
IntBuffer int_buffer = ByteBuffer.allocateDirect(4).order(ByteOrder.nativeOrder()).asIntBuffer();
|
||||
ARBBufferObject.glGenBuffersARB(int_buffer);
|
||||
buffer_id = int_buffer.get(0);
|
||||
buffer_id = ARBBufferObject.glGenBuffersARB();
|
||||
ARBBufferObject.glBindBufferARB(ARBVertexBufferObject.GL_ARRAY_BUFFER_ARB, buffer_id);
|
||||
vertices = ByteBuffer.allocateDirect(2 * 4 * 4).order(ByteOrder.nativeOrder()).asFloatBuffer();
|
||||
vertices.put(-50).put(-50).put(50).put(-50).put(50).put(50).put(-50).put(50);
|
||||
|
|
@ -206,9 +203,7 @@ public final class VBOTest {
|
|||
* Cleanup
|
||||
*/
|
||||
private static void cleanup() {
|
||||
IntBuffer int_buffer = ByteBuffer.allocateDirect(4).order(ByteOrder.nativeOrder()).asIntBuffer();
|
||||
int_buffer.put(0, buffer_id);
|
||||
ARBBufferObject.glDeleteBuffersARB(int_buffer);
|
||||
ARBBufferObject.glDeleteBuffersARB(buffer_id);
|
||||
Display.destroy();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,21 +37,18 @@
|
|||
*/
|
||||
package org.lwjgl.test.opengl.shaders;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.IntBuffer;
|
||||
|
||||
import org.lwjgl.BufferUtils;
|
||||
import org.lwjgl.opengl.ARBProgram;
|
||||
import org.lwjgl.opengl.ARBShaderObjects;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
abstract class Shader {
|
||||
|
||||
private static final IntBuffer int_buffer = BufferUtils.createIntBuffer(16);
|
||||
protected static IntBuffer programBuffer = BufferUtils.createIntBuffer(1);
|
||||
protected static ByteBuffer fileBuffer = BufferUtils.createByteBuffer(1024 * 10);
|
||||
|
||||
protected Shader() {
|
||||
|
|
@ -61,18 +58,6 @@ abstract class Shader {
|
|||
|
||||
abstract void cleanup();
|
||||
|
||||
/**
|
||||
* Obtain a GL integer value from the driver
|
||||
*
|
||||
* @param gl_enum The GL value you want
|
||||
*
|
||||
* @return the integer value
|
||||
*/
|
||||
public static int glGetInteger(int gl_enum) {
|
||||
GL11.glGetInteger(gl_enum, int_buffer);
|
||||
return int_buffer.get(0);
|
||||
}
|
||||
|
||||
protected static String getShaderText(String file) {
|
||||
String shader = null;
|
||||
|
||||
|
|
@ -107,7 +92,7 @@ abstract class Shader {
|
|||
|
||||
protected static void checkProgramError(String programFile, String programSource) {
|
||||
if ( GL11.glGetError() == GL11.GL_INVALID_OPERATION ) {
|
||||
final int errorPos = glGetInteger(ARBProgram.GL_PROGRAM_ERROR_POSITION_ARB);
|
||||
final int errorPos = GL11.glGetInteger(ARBProgram.GL_PROGRAM_ERROR_POSITION_ARB);
|
||||
int lineStart = 0;
|
||||
int lineEnd = -1;
|
||||
for ( int i = 0; i < programSource.length(); i++ ) {
|
||||
|
|
@ -140,9 +125,7 @@ abstract class Shader {
|
|||
}
|
||||
|
||||
protected static void printShaderObjectInfoLog(String file, int ID) {
|
||||
ARBShaderObjects.glGetObjectParameterARB(ID, ARBShaderObjects.GL_OBJECT_INFO_LOG_LENGTH_ARB, programBuffer);
|
||||
|
||||
final int logLength = programBuffer.get(0);
|
||||
final int logLength = ARBShaderObjects.glGetObjectParameteriARB(ID, ARBShaderObjects.GL_OBJECT_INFO_LOG_LENGTH_ARB);
|
||||
if ( logLength <= 1 )
|
||||
return;
|
||||
|
||||
|
|
@ -153,9 +136,7 @@ abstract class Shader {
|
|||
}
|
||||
|
||||
protected static void printShaderProgramInfoLog(int ID) {
|
||||
ARBShaderObjects.glGetObjectParameterARB(ID, ARBShaderObjects.GL_OBJECT_INFO_LOG_LENGTH_ARB, programBuffer);
|
||||
|
||||
final int logLength = programBuffer.get(0);
|
||||
final int logLength = ARBShaderObjects.glGetObjectParameteriARB(ID, ARBShaderObjects.GL_OBJECT_INFO_LOG_LENGTH_ARB);
|
||||
if ( logLength <= 1 )
|
||||
return;
|
||||
|
||||
|
|
|
|||
|
|
@ -60,9 +60,7 @@ final class ShaderFP extends Shader {
|
|||
vpFile = vpShaderFile;
|
||||
vpSource = getShaderText(vpShaderFile);
|
||||
|
||||
ARBProgram.glGenProgramsARB(programBuffer);
|
||||
|
||||
vpID = programBuffer.get(0);
|
||||
vpID = ARBProgram.glGenProgramsARB();
|
||||
|
||||
ARBProgram.glBindProgramARB(ARBVertexProgram.GL_VERTEX_PROGRAM_ARB, vpID);
|
||||
ARBProgram.glProgramStringARB(ARBVertexProgram.GL_VERTEX_PROGRAM_ARB, ARBProgram.GL_PROGRAM_FORMAT_ASCII_ARB, vpSource);
|
||||
|
|
@ -73,9 +71,7 @@ final class ShaderFP extends Shader {
|
|||
fpFile = fpShaderFile;
|
||||
fpSource = getShaderText(fpShaderFile);
|
||||
|
||||
ARBProgram.glGenProgramsARB(programBuffer);
|
||||
|
||||
fpID = programBuffer.get(0);
|
||||
fpID = ARBProgram.glGenProgramsARB();
|
||||
|
||||
ARBProgram.glBindProgramARB(ARBFragmentProgram.GL_FRAGMENT_PROGRAM_ARB, fpID);
|
||||
ARBProgram.glProgramStringARB(ARBFragmentProgram.GL_FRAGMENT_PROGRAM_ARB, ARBProgram.GL_PROGRAM_FORMAT_ASCII_ARB, fpSource);
|
||||
|
|
@ -104,11 +100,8 @@ final class ShaderFP extends Shader {
|
|||
}
|
||||
|
||||
void cleanup() {
|
||||
programBuffer.put(0, vpID);
|
||||
ARBProgram.glDeleteProgramsARB(programBuffer);
|
||||
|
||||
programBuffer.put(0, fpID);
|
||||
ARBProgram.glDeleteProgramsARB(programBuffer);
|
||||
ARBProgram.glDeleteProgramsARB(vpID);
|
||||
ARBProgram.glDeleteProgramsARB(fpID);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -70,8 +70,7 @@ final class ShaderFSH extends Shader {
|
|||
|
||||
printShaderObjectInfoLog(this.vshFile, vshID);
|
||||
|
||||
ARBShaderObjects.glGetObjectParameterARB(vshID, ARBShaderObjects.GL_OBJECT_COMPILE_STATUS_ARB, programBuffer);
|
||||
if ( programBuffer.get(0) == GL11.GL_FALSE )
|
||||
if ( ARBShaderObjects.glGetObjectParameteriARB(vshID, ARBShaderObjects.GL_OBJECT_COMPILE_STATUS_ARB) == GL11.GL_FALSE )
|
||||
ShadersTest.kill("A compilation error occured in a vertex shader.");
|
||||
|
||||
// Initialize the fragment shader.
|
||||
|
|
@ -84,8 +83,7 @@ final class ShaderFSH extends Shader {
|
|||
|
||||
printShaderObjectInfoLog(this.fshFile, fshID);
|
||||
|
||||
ARBShaderObjects.glGetObjectParameterARB(fshID, ARBShaderObjects.GL_OBJECT_COMPILE_STATUS_ARB, programBuffer);
|
||||
if ( programBuffer.get(0) == GL11.GL_FALSE )
|
||||
if ( ARBShaderObjects.glGetObjectParameteriARB(fshID, ARBShaderObjects.GL_OBJECT_COMPILE_STATUS_ARB) == GL11.GL_FALSE )
|
||||
ShadersTest.kill("A compilation error occured in a fragment shader.");
|
||||
|
||||
// Initialize the shader program.
|
||||
|
|
@ -98,8 +96,7 @@ final class ShaderFSH extends Shader {
|
|||
|
||||
printShaderProgramInfoLog(programID);
|
||||
|
||||
ARBShaderObjects.glGetObjectParameterARB(programID, ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB, programBuffer);
|
||||
if ( programBuffer.get(0) == GL11.GL_FALSE )
|
||||
if ( ARBShaderObjects.glGetObjectParameteriARB(programID, ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE )
|
||||
ShadersTest.kill("A linking error occured in a shader program.");
|
||||
|
||||
uniformLocation = getUniformLocation(programID, "UNIFORMS");
|
||||
|
|
|
|||
|
|
@ -70,8 +70,7 @@ final class ShaderUNI extends Shader {
|
|||
|
||||
printShaderObjectInfoLog(file, shaderID);
|
||||
|
||||
GL20.glGetShader(shaderID, GL20.GL_COMPILE_STATUS, programBuffer);
|
||||
if ( programBuffer.get(0) == GL11.GL_FALSE )
|
||||
if ( GL20.glGetShader(shaderID, GL20.GL_COMPILE_STATUS) == GL11.GL_FALSE )
|
||||
ShadersTest.kill("A compilation error occured in a vertex shader.");
|
||||
|
||||
programID = GL20.glCreateProgram();
|
||||
|
|
@ -81,27 +80,19 @@ final class ShaderUNI extends Shader {
|
|||
|
||||
printShaderProgramInfoLog(programID);
|
||||
|
||||
GL20.glGetProgram(programID, GL20.GL_LINK_STATUS, programBuffer);
|
||||
if ( programBuffer.get(0) == GL11.GL_FALSE )
|
||||
if ( GL20.glGetProgram(programID, GL20.GL_LINK_STATUS) == GL11.GL_FALSE )
|
||||
ShadersTest.kill("A linking error occured in a shader program.");
|
||||
|
||||
final String[] uniformNames = { "uniformA", "uniformB" };
|
||||
|
||||
IntBuffer indexes = BufferUtils.createIntBuffer(uniformNames.length);
|
||||
IntBuffer params = BufferUtils.createIntBuffer(uniformNames.length);
|
||||
IntBuffer getBuffer = BufferUtils.createIntBuffer(16);
|
||||
IntBuffer buffers = BufferUtils.createIntBuffer(1);
|
||||
|
||||
// Get uniform block index and data size
|
||||
final int blockIndex = ARBUniformBufferObject.glGetUniformBlockIndex(programID, "test");
|
||||
ARBUniformBufferObject.glGetActiveUniformBlock(programID, blockIndex, ARBUniformBufferObject.GL_UNIFORM_BLOCK_DATA_SIZE, getBuffer);
|
||||
final int blockSize = getBuffer.get(0);
|
||||
final int blockSize = ARBUniformBufferObject.glGetActiveUniformBlock(programID, blockIndex, ARBUniformBufferObject.GL_UNIFORM_BLOCK_DATA_SIZE);
|
||||
|
||||
System.out.println("blockSize = " + blockSize);
|
||||
|
||||
// Create uniform buffer object and allocate a ByteBuffer
|
||||
GL15.glGenBuffers(buffers);
|
||||
bufferID = buffers.get(0);
|
||||
bufferID = GL15.glGenBuffers();
|
||||
GL15.glBindBuffer(ARBUniformBufferObject.GL_UNIFORM_BUFFER, bufferID);
|
||||
GL15.glBufferData(ARBUniformBufferObject.GL_UNIFORM_BUFFER, blockSize, GL15.GL_DYNAMIC_DRAW);
|
||||
buffer = BufferUtils.createFloatBuffer(blockSize);
|
||||
|
|
@ -111,6 +102,9 @@ final class ShaderUNI extends Shader {
|
|||
ARBUniformBufferObject.glUniformBlockBinding(programID, blockIndex, 0);
|
||||
|
||||
// Get uniform information
|
||||
IntBuffer indexes = BufferUtils.createIntBuffer(uniformNames.length);
|
||||
IntBuffer params = BufferUtils.createIntBuffer(uniformNames.length);
|
||||
|
||||
ARBUniformBufferObject.glGetUniformIndices(programID, uniformNames, indexes);
|
||||
uniformA_index = indexes.get(0);
|
||||
uniformB_index = indexes.get(1);
|
||||
|
|
|
|||
|
|
@ -53,9 +53,7 @@ final class ShaderVP extends Shader {
|
|||
file = shaderFile;
|
||||
source = getShaderText(shaderFile);
|
||||
|
||||
ARBProgram.glGenProgramsARB(programBuffer);
|
||||
|
||||
ID = programBuffer.get(0);
|
||||
ID = ARBProgram.glGenProgramsARB();
|
||||
|
||||
ARBProgram.glBindProgramARB(ARBVertexProgram.GL_VERTEX_PROGRAM_ARB, ID);
|
||||
ARBProgram.glProgramStringARB(ARBVertexProgram.GL_VERTEX_PROGRAM_ARB, ARBProgram.GL_PROGRAM_FORMAT_ASCII_ARB, source);
|
||||
|
|
@ -76,8 +74,7 @@ final class ShaderVP extends Shader {
|
|||
}
|
||||
|
||||
void cleanup() {
|
||||
programBuffer.put(0, ID);
|
||||
ARBProgram.glDeleteProgramsARB(programBuffer);
|
||||
ARBProgram.glDeleteProgramsARB(ID);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -38,8 +38,6 @@
|
|||
|
||||
package org.lwjgl.test.opengl.shaders;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
import org.lwjgl.opengl.ARBShaderObjects;
|
||||
import org.lwjgl.opengl.ARBVertexShader;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
|
@ -64,8 +62,7 @@ final class ShaderVSH extends Shader {
|
|||
|
||||
printShaderObjectInfoLog(file, shaderID);
|
||||
|
||||
ARBShaderObjects.glGetObjectParameterARB(shaderID, ARBShaderObjects.GL_OBJECT_COMPILE_STATUS_ARB, programBuffer);
|
||||
if ( programBuffer.get(0) == GL11.GL_FALSE )
|
||||
if ( ARBShaderObjects.glGetObjectParameteriARB(shaderID, ARBShaderObjects.GL_OBJECT_COMPILE_STATUS_ARB) == GL11.GL_FALSE )
|
||||
ShadersTest.kill("A compilation error occured in a vertex shader.");
|
||||
|
||||
programID = ARBShaderObjects.glCreateProgramObjectARB();
|
||||
|
|
@ -75,8 +72,7 @@ final class ShaderVSH extends Shader {
|
|||
|
||||
printShaderProgramInfoLog(programID);
|
||||
|
||||
ARBShaderObjects.glGetObjectParameterARB(programID, ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB, programBuffer);
|
||||
if ( programBuffer.get(0) == GL11.GL_FALSE )
|
||||
if ( ARBShaderObjects.glGetObjectParameteriARB(programID, ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE )
|
||||
ShadersTest.kill("A linking error occured in a shader program.");
|
||||
|
||||
uniformLocation = getUniformLocation(programID, "UNIFORMS");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue