本文整理汇总了Java中com.jogamp.opengl.GL2GL3.glBindBuffer方法的典型用法代码示例。如果您正苦于以下问题:Java GL2GL3.glBindBuffer方法的具体用法?Java GL2GL3.glBindBuffer怎么用?Java GL2GL3.glBindBuffer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.jogamp.opengl.GL2GL3
的用法示例。
在下文中一共展示了GL2GL3.glBindBuffer方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: load
import com.jogamp.opengl.GL2GL3; //导入方法依赖的package包/类
@Override
public boolean load(RenderContext context, boolean force) {
if (state == State.DISPOSED || state == State.UNINITIALIZED) return false;
if (state == State.LOADED && !force) return false;
GL2GL3 gl = context.getDrawable().getGL().getGL2GL3();
gl.glBindBuffer(vbo.target, vbo.handle);
gl.glBufferData(vbo.target, vertices.capacity() * 4L, vertices, usage);
gl.glBindBuffer(vbo.target, 0);
nVertices = vertices.capacity() / datatype.size;
state = State.LOADED;
return true;
}
示例2: load
import com.jogamp.opengl.GL2GL3; //导入方法依赖的package包/类
@Override
public boolean load(RenderContext context, boolean force) {
if (state == State.DISPOSED || state == State.UNINITIALIZED) return false;
if (state == State.LOADED && !force) return false;
GL2GL3 gl = context.getDrawable().getGL().getGL2GL3();
// vertices
gl.glBindBuffer(vbo.target, vbo.handle);
gl.glBufferData(vbo.target, vertices.capacity() * 4L, vertices, usage);
gl.glBindBuffer(vbo.target, 0);
// indices
gl.glBindBuffer(ibo.target, ibo.handle);
gl.glBufferData(ibo.target, indices.capacity() * 4L, indices, usage);
gl.glBindBuffer(ibo.target, 0);
state = State.LOADED;
return true;
}
示例3: renderOutline
import com.jogamp.opengl.GL2GL3; //导入方法依赖的package包/类
private void renderOutline(GL2GL3 gl) {
// The vertex list is just the closed loop of points
if (lineWidth == 0) {
return;
}
gl.glBindBuffer(GL2GL3.GL_ARRAY_BUFFER, _vertBuffer);
gl.glBufferData(GL2GL3.GL_ARRAY_BUFFER, fb.limit() * 4, fb, GL2GL3.GL_STATIC_DRAW);
gl.glVertexAttribPointer(_posVar, 3, GL2GL3.GL_FLOAT, false, 0, 0);
gl.glBindBuffer(GL2GL3.GL_ARRAY_BUFFER, 0);
if (!gl.isGLcore())
gl.glLineWidth((float)lineWidth);
else
gl.glLineWidth(1.0f);
gl.glDrawArrays(GL2GL3.GL_LINE_LOOP, 0, _points.size());
gl.glLineWidth(1.0f);
}
示例4: createVertexBufferObject
import com.jogamp.opengl.GL2GL3; //导入方法依赖的package包/类
/**
* Creates a vertex buffer object for use with a pipeline.
*
* @param gl Current OpenGL context
* @param size Size in bytes of buffer
* @return OpenGL handle to vertex buffer object
* @throws NullPointerException if context is null
* @throws IllegalArgumentException if size is negative
*/
/*@Nonnegative*/
protected static int createVertexBufferObject(/*@Nonnull*/ final GL2GL3 gl,
/*@Nonnegative*/ final int size) {
Check.notNull(gl, "GL cannot be null");
Check.argument(size >= 0, "Size cannot be negative");
// Generate
final int[] handles = new int[1];
gl.glGenBuffers(1, handles, 0);
final int vbo = handles[0];
// Allocate
gl.glBindBuffer(GL2GL3.GL_ARRAY_BUFFER, vbo);
gl.glBufferData(
GL2GL3.GL_ARRAY_BUFFER, // target
size, // size
null, // data
GL2GL3.GL_STREAM_DRAW); // usage
gl.glBindBuffer(GL2GL3.GL_ARRAY_BUFFER, 0);
return vbo;
}
示例5: loadGPUAssets
import com.jogamp.opengl.GL2GL3; //导入方法依赖的package包/类
public static void loadGPUAssets(Renderer r) {
GL2GL3 gl = r.getGL();
int[] buffs = new int[1];
gl.glGenBuffers(1, buffs, 0);
vertBuff = buffs[0];
progHandle = r.getShader(Renderer.ShaderHandle.SKYBOX).getProgramHandle();
projMatVar = gl.glGetUniformLocation(progHandle, "projMat");
invViewMatVar = gl.glGetUniformLocation(progHandle, "invViewMat");
texVar = gl.glGetUniformLocation(progHandle, "tex");
FloatBuffer verts = FloatBuffer.allocate(6*3); // 2 triangles * 3 coordinates
verts.put(-0.5f); verts.put(-0.5f); verts.put(-0.5f);
verts.put( 0.5f); verts.put(-0.5f); verts.put(-0.5f);
verts.put( 0.5f); verts.put( 0.5f); verts.put(-0.5f);
verts.put(-0.5f); verts.put(-0.5f); verts.put(-0.5f);
verts.put( 0.5f); verts.put( 0.5f); verts.put(-0.5f);
verts.put(-0.5f); verts.put( 0.5f); verts.put(-0.5f);
verts.flip();
gl.glBindBuffer(GL2GL3.GL_ARRAY_BUFFER, vertBuff);
gl.glBufferData(GL2GL3.GL_ARRAY_BUFFER, 6*3*4, verts, GL2GL3.GL_STATIC_DRAW);
gl.glBindBuffer(GL2GL3.GL_ARRAY_BUFFER, 0);
isLoaded = true;
}
示例6: loadGPUSubLine
import com.jogamp.opengl.GL2GL3; //导入方法依赖的package包/类
private void loadGPUSubLine(GL2GL3 gl, Renderer renderer, MeshData.SubLineData data) {
Shader s = renderer.getShader(Renderer.ShaderHandle.DEBUG);
assert (s.isGood());
SubLine sub = new SubLine();
sub._progHandle = s.getProgramHandle();
int[] is = new int[1];
gl.glGenBuffers(1, is, 0);
sub._vertexBuffer = is[0];
sub._numVerts = data.verts.size();
sub._hull = data.hull;
// Init vertices
FloatBuffer fb = FloatBuffer.allocate(data.verts.size() * 3); //
for (Vec3d v : data.verts) {
RenderUtils.putPointXYZ(fb, v);
}
fb.flip();
gl.glBindBuffer(GL2GL3.GL_ARRAY_BUFFER, sub._vertexBuffer);
gl.glBufferData(GL2GL3.GL_ARRAY_BUFFER, sub._numVerts * 3 * 4, fb, GL2GL3.GL_STATIC_DRAW);
// Bind the shader variables
sub._modelViewMatVar = gl.glGetUniformLocation(sub._progHandle, "modelViewMat");
sub._projMatVar = gl.glGetUniformLocation(sub._progHandle, "projMat");
sub._diffuseColor = new Color4d(data.diffuseColor);
sub._colorVar = gl.glGetUniformLocation(sub._progHandle, "color");
sub._cVar = gl.glGetUniformLocation(sub._progHandle, "C");
sub._fcVar = gl.glGetUniformLocation(sub._progHandle, "FC");
_subLines.add(sub);
}
示例7: draw
import com.jogamp.opengl.GL2GL3; //导入方法依赖的package包/类
public void draw() {
final GL2GL3 gl = GLContext.getCurrentGL().getGL2GL3();
if (options.usingVBOs) {
gl.glBindBuffer(GL.GL_ARRAY_BUFFER, vertexVbo);
}
for (int i = 0; i < options.attributes.size(); i++) {
gl.glEnableVertexAttribArray(vertexAttribLocations[i]);
VertexAttribute attribute = options.attributes.get(i);
if (options.usingVBOs) {
gl.glVertexAttribPointer(
vertexAttribLocations[i],
attribute.size,
attribute.type,
attribute.normalized,
bytesPerVertex,
vertexAttribOffsets[i]);
} else {
vertices.position(vertexAttribOffsets[i]);
gl.getGL2().glVertexAttribPointer(
vertexAttribLocations[i],
attribute.size,
attribute.type,
attribute.normalized,
bytesPerVertex,
vertices);
}
}
gl.glDrawArrays(options.mode, 0, numVertices);
for (int i = 0; i < vertexAttribLocations.length; i++) {
gl.glDisableVertexAttribArray(vertexAttribLocations[i]);
}
}
示例8: setupVAO
import com.jogamp.opengl.GL2GL3; //导入方法依赖的package包/类
private void setupVAO(int contextID, Renderer renderer) {
GL2GL3 gl = renderer.getGL();
int vao = renderer.generateVAO(contextID, gl);
VAOMap.put(contextID, vao);
gl.glBindVertexArray(vao);
// Position
int posVar = gl.glGetAttribLocation(progHandle, "position");
gl.glEnableVertexAttribArray(posVar);
gl.glBindBuffer(GL2GL3.GL_ARRAY_BUFFER, vertBuff);
gl.glVertexAttribPointer(posVar, 3, GL2GL3.GL_FLOAT, false, 0, 0);
gl.glBindBuffer(GL2GL3.GL_ARRAY_BUFFER, 0);
gl.glBindVertexArray(0);
}
示例9: initStaticBuffers
import com.jogamp.opengl.GL2GL3; //导入方法依赖的package包/类
private static void initStaticBuffers(Renderer r) {
GL2GL3 gl = r.getGL();
int[] buffs = new int[3];
gl.glGenBuffers(3, buffs, 0);
vertBuff = buffs[0];
texCoordBuff = buffs[1];
normalBuff = buffs[2];
FloatBuffer verts = FloatBuffer.allocate(6*3); // 2 triangles * 3 coordinates
verts.put(-0.5f); verts.put(-0.5f); verts.put(0.0f);
verts.put( 0.5f); verts.put(-0.5f); verts.put(0.0f);
verts.put( 0.5f); verts.put( 0.5f); verts.put(0.0f);
verts.put(-0.5f); verts.put(-0.5f); verts.put(0.0f);
verts.put( 0.5f); verts.put( 0.5f); verts.put(0.0f);
verts.put(-0.5f); verts.put( 0.5f); verts.put(0.0f);
verts.flip();
gl.glBindBuffer(GL2GL3.GL_ARRAY_BUFFER, vertBuff);
gl.glBufferData(GL2GL3.GL_ARRAY_BUFFER, 6*3*4, verts, GL2GL3.GL_STATIC_DRAW);
FloatBuffer texCoords = FloatBuffer.allocate(6*2); // 2 triangles * 2 coordinates
texCoords.put(0.0f); texCoords.put(0.0f);
texCoords.put(1.0f); texCoords.put(0.0f);
texCoords.put(1.0f); texCoords.put(1.0f);
texCoords.put(0.0f); texCoords.put(0.0f);
texCoords.put(1.0f); texCoords.put(1.0f);
texCoords.put(0.0f); texCoords.put(1.0f);
texCoords.flip();
gl.glBindBuffer(GL2GL3.GL_ARRAY_BUFFER, texCoordBuff);
gl.glBufferData(GL2GL3.GL_ARRAY_BUFFER, 6*2*4, texCoords, GL2GL3.GL_STATIC_DRAW);
FloatBuffer normals = FloatBuffer.allocate(6*3); // 2 triangles * 3 coordinates
for (int i = 0; i < 6; ++i) {
normals.put(0.0f); normals.put(0.0f); normals.put(1.0f);
}
normals.flip();
gl.glBindBuffer(GL2GL3.GL_ARRAY_BUFFER, normalBuff);
gl.glBufferData(GL2GL3.GL_ARRAY_BUFFER, 6*3*4, normals, GL2GL3.GL_STATIC_DRAW);
// Initialize the shader variables
progHandle = r.getMeshShader(Renderer.DIFF_TEX_FLAG).getProgramHandle();
modelViewMatVar = gl.glGetUniformLocation(progHandle, "modelViewMat");
projMatVar = gl.glGetUniformLocation(progHandle, "projMat");
normalMatVar = gl.glGetUniformLocation(progHandle, "normalMat");
bindSpaceMatVar = gl.glGetUniformLocation(progHandle, "bindSpaceMat");
bindSpaceNorMatVar = gl.glGetUniformLocation(progHandle, "bindSpaceNorMat");
texVar = gl.glGetUniformLocation(progHandle, "diffuseTex");
lightDirVar = gl.glGetUniformLocation(progHandle, "lightDir");
lightIntVar = gl.glGetUniformLocation(progHandle, "lightIntensity");
numLightsVar = gl.glGetUniformLocation(progHandle, "numLights");
specColorVar = gl.glGetUniformLocation(progHandle, "specColor");
ambientColorVar = gl.glGetUniformLocation(progHandle, "ambientColor");
shininessVar = gl.glGetUniformLocation(progHandle, "shininess");
cVar = gl.glGetUniformLocation(progHandle, "C");
fcVar = gl.glGetUniformLocation(progHandle, "FC");
lightDir[0] = 0;
lightDir[1] = 0;
lightDir[2] = -1;
lightInt[0] = 1;
staticInit = true;
}
示例10: initStaticBuffers
import com.jogamp.opengl.GL2GL3; //导入方法依赖的package包/类
private static void initStaticBuffers(Renderer r) {
GL2GL3 gl = r.getGL();
int[] buffs = new int[2];
gl.glGenBuffers(2, buffs, 0);
vertBuff = buffs[0];
texCoordBuff = buffs[1];
FloatBuffer verts = FloatBuffer.allocate(6*3); // 2 triangles * 3 coordinates
verts.put(0.0f); verts.put(0.0f); verts.put(0.0f);
verts.put(1.0f); verts.put(0.0f); verts.put(0.0f);
verts.put(1.0f); verts.put(1.0f); verts.put(0.0f);
verts.put(0.0f); verts.put(0.0f); verts.put(0.0f);
verts.put(1.0f); verts.put(1.0f); verts.put(0.0f);
verts.put(0.0f); verts.put(1.0f); verts.put(0.0f);
verts.flip();
gl.glBindBuffer(GL2GL3.GL_ARRAY_BUFFER, vertBuff);
gl.glBufferData(GL2GL3.GL_ARRAY_BUFFER, 6*3*4, verts, GL2GL3.GL_STATIC_DRAW);
FloatBuffer texCoords = FloatBuffer.allocate(6*2); // 2 triangles * 2 coordinates
texCoords.put(0.0f); texCoords.put(0.0f);
texCoords.put(1.0f); texCoords.put(0.0f);
texCoords.put(1.0f); texCoords.put(1.0f);
texCoords.put(0.0f); texCoords.put(0.0f);
texCoords.put(1.0f); texCoords.put(1.0f);
texCoords.put(0.0f); texCoords.put(1.0f);
texCoords.flip();
gl.glBindBuffer(GL2GL3.GL_ARRAY_BUFFER, texCoordBuff);
gl.glBufferData(GL2GL3.GL_ARRAY_BUFFER, 6*2*4, texCoords, GL2GL3.GL_STATIC_DRAW);
// Initialize the shader variables
progHandle = r.getShader(Renderer.ShaderHandle.OVERLAY_FLAT).getProgramHandle();
texVar = gl.glGetUniformLocation(progHandle, "tex");
hasTexVar = gl.glGetUniformLocation(progHandle, "useTex");
sizeVar = gl.glGetUniformLocation(progHandle, "size");
offsetVar = gl.glGetUniformLocation(progHandle, "offset");
staticInit = true;
}
示例11: setupVAO
import com.jogamp.opengl.GL2GL3; //导入方法依赖的package包/类
private void setupVAO(int contextID, Renderer renderer) {
GL2GL3 gl = renderer.getGL();
int vao = renderer.generateVAO(contextID, gl);
VAOMap.put(contextID, vao);
gl.glBindVertexArray(vao);
// Position
int posVar = gl.glGetAttribLocation(progHandle, "position");
gl.glEnableVertexAttribArray(posVar);
gl.glBindBuffer(GL2GL3.GL_ARRAY_BUFFER, vertBuff);
gl.glVertexAttribPointer(posVar, 3, GL2GL3.GL_FLOAT, false, 0, 0);
// TexCoords
int texCoordVar = gl.glGetAttribLocation(progHandle, "texCoordVert");
gl.glEnableVertexAttribArray(texCoordVar);
gl.glBindBuffer(GL2GL3.GL_ARRAY_BUFFER, texCoordBuff);
gl.glVertexAttribPointer(texCoordVar, 2, GL2GL3.GL_FLOAT, false, 0, 0);
gl.glBindVertexArray(0);
}
示例12: loadGLTexture
import com.jogamp.opengl.GL2GL3; //导入方法依赖的package包/类
private int loadGLTexture(GL2GL3 gl, LoadingEntry le) {
if (le.failed.get()) {
return badTextureID;
}
int[] i = new int[1];
gl.glGenTextures(1, i, 0);
int glTexID = i[0];
gl.glBindTexture(GL2GL3.GL_TEXTURE_2D, glTexID);
if (le.compressed)
gl.glTexParameteri(GL2GL3.GL_TEXTURE_2D, GL2GL3.GL_TEXTURE_MIN_FILTER, GL2GL3.GL_LINEAR );
else
gl.glTexParameteri(GL2GL3.GL_TEXTURE_2D, GL2GL3.GL_TEXTURE_MIN_FILTER, GL2GL3.GL_LINEAR_MIPMAP_LINEAR );
gl.glTexParameteri(GL2GL3.GL_TEXTURE_2D, GL2GL3.GL_TEXTURE_MAG_FILTER, GL2GL3.GL_LINEAR );
gl.glTexParameteri(GL2GL3.GL_TEXTURE_2D, GL2GL3.GL_TEXTURE_WRAP_S, GL2GL3.GL_REPEAT);
gl.glTexParameteri(GL2GL3.GL_TEXTURE_2D, GL2GL3.GL_TEXTURE_WRAP_T, GL2GL3.GL_REPEAT);
gl.glPixelStorei(GL2GL3.GL_UNPACK_ALIGNMENT, 1);
// Attempt to load to a proxy texture first, then see what happens
int internalFormat = 0;
if (le.hasAlpha && le.compressed) {
// We do not currently support compressed textures with alpha
assert(false);
return badTextureID;
} else if(le.hasAlpha && !le.compressed) {
internalFormat = GL2GL3.GL_RGBA;
} else if(!le.hasAlpha && le.compressed) {
internalFormat = GL2GL3.GL_COMPRESSED_RGB_S3TC_DXT1_EXT;
} else if(!le.hasAlpha && !le.compressed) {
internalFormat = GL2GL3.GL_RGB;
}
gl.glBindBuffer(GL2GL3.GL_PIXEL_UNPACK_BUFFER, le.bufferID);
gl.glUnmapBuffer(GL2GL3.GL_PIXEL_UNPACK_BUFFER);
try {
if (le.compressed) {
gl.glCompressedTexImage2D(GL2GL3.GL_TEXTURE_2D, 0, internalFormat, le.width,
le.height, 0, le.data.capacity(), 0);
_renderer.usingVRAM(le.data.capacity());
} else {
gl.glTexImage2D(GL2GL3.GL_TEXTURE_2D, 0, internalFormat, le.width,
le.height, 0, GL2GL3.GL_BGRA, GL2GL3.GL_UNSIGNED_INT_8_8_8_8_REV, 0);
_renderer.usingVRAM(le.width*le.height*4);
}
// Note we do not let openGL generate compressed mipmaps because it stalls the render thread really badly
// in theory it could be generated in the worker thread, but not yet
if (!le.compressed)
gl.glGenerateMipmap(GL2GL3.GL_TEXTURE_2D);
} catch (GLException ex) {
// We do not have enough texture memory
LogBox.renderLog(String.format("Error loading texture: %s", le.imageURI.toString()));
LogBox.renderLog(String.format(" %s", ex.toString()));
return badTextureID;
}
gl.glBindTexture(GL2GL3.GL_TEXTURE_2D, 0);
gl.glBindBuffer(GL2GL3.GL_PIXEL_UNPACK_BUFFER, 0);
i[0] = le.bufferID;
gl.glDeleteBuffers(1, i, 0);
// Finally queue a redraw in case an asset avoided drawing this one
_renderer.queueRedraw();
return glTexID;
}
示例13: setupVAO
import com.jogamp.opengl.GL2GL3; //导入方法依赖的package包/类
private void setupVAO(int contextID, Renderer renderer, int progHandle, int vertexBuffer, int indexBuffer) {
GL2GL3 gl = renderer.getGL();
int vao = renderer.generateVAO(contextID, gl);
_vaoMap.put(contextID, vao);
gl.glBindVertexArray(vao);
gl.glUseProgram(progHandle);
int posVar = gl.glGetAttribLocation(progHandle, "position");
gl.glEnableVertexAttribArray(posVar);
gl.glBindBuffer(GL2GL3.GL_ARRAY_BUFFER, vertexBuffer);
gl.glVertexAttribPointer(posVar, 3, GL2GL3.GL_FLOAT, false, 0, 0);
gl.glBindBuffer(GL2GL3.GL_ELEMENT_ARRAY_BUFFER, indexBuffer);
gl.glBindVertexArray(0);
}
示例14: setupVAOForSubMeshImp
import com.jogamp.opengl.GL2GL3; //导入方法依赖的package包/类
private void setupVAOForSubMeshImp(int contextID, int shaderID, SubMesh sub, Renderer renderer) {
GL2GL3 gl = renderer.getGL();
int vao = renderer.generateVAO(contextID, gl);
sub.vaoMaps[shaderID].put(contextID, vao);
gl.glBindVertexArray(vao);
int progHandle = sInfos[shaderID].meshProgHandle;
gl.glUseProgram(progHandle);
int texCoordVar = gl.glGetAttribLocation(progHandle, "texCoord");
// For some shaders the texCoordVar may be optimized away
if (texCoordVar != -1) {
if (sub._texCoordBuffer != 0) {
// Texture coordinates
gl.glEnableVertexAttribArray(texCoordVar);
gl.glBindBuffer(GL2GL3.GL_ARRAY_BUFFER, sub._texCoordBuffer);
gl.glVertexAttribPointer(texCoordVar, 2, GL2GL3.GL_FLOAT, false, 0, 0);
} else {
gl.glVertexAttrib2f(texCoordVar, 0, 0);
}
}
int posVar = gl.glGetAttribLocation(progHandle, "position");
gl.glEnableVertexAttribArray(posVar);
gl.glBindBuffer(GL2GL3.GL_ARRAY_BUFFER, sub._vertexBuffer);
gl.glVertexAttribPointer(posVar, 3, GL2GL3.GL_FLOAT, false, 0, 0);
// Normals
int normalVar = gl.glGetAttribLocation(progHandle, "normal");
gl.glEnableVertexAttribArray(normalVar);
gl.glBindBuffer(GL2GL3.GL_ARRAY_BUFFER, sub._normalBuffer);
gl.glVertexAttribPointer(normalVar, 3, GL2GL3.GL_FLOAT, false, 0, 0);
if (!flattenBuffers) {
gl.glBindBuffer(GL2GL3.GL_ELEMENT_ARRAY_BUFFER, sub._indexBuffer);
}
gl.glBindVertexArray(0);
}
示例15: setupVAOForSubLine
import com.jogamp.opengl.GL2GL3; //导入方法依赖的package包/类
private void setupVAOForSubLine(int contextID, SubLine sub, Renderer renderer) {
GL2GL3 gl = renderer.getGL();
int vao = renderer.generateVAO(contextID, gl);
sub.vaoMap.put(contextID, vao);
gl.glBindVertexArray(vao);
int prog = sub._progHandle;
gl.glUseProgram(prog);
int posVar = gl.glGetAttribLocation(prog, "position");
gl.glEnableVertexAttribArray(posVar);
gl.glBindBuffer(GL2GL3.GL_ARRAY_BUFFER, sub._vertexBuffer);
gl.glVertexAttribPointer(posVar, 3, GL2GL3.GL_FLOAT, false, 0, 0);
gl.glBindVertexArray(0);
}