本文整理汇总了Java中com.jogamp.opengl.GLCapabilities.setFBO方法的典型用法代码示例。如果您正苦于以下问题:Java GLCapabilities.setFBO方法的具体用法?Java GLCapabilities.setFBO怎么用?Java GLCapabilities.setFBO使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.jogamp.opengl.GLCapabilities
的用法示例。
在下文中一共展示了GLCapabilities.setFBO方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: drawShape
import com.jogamp.opengl.GLCapabilities; //导入方法依赖的package包/类
@Override
public void drawShape(final GL2ES2 gl, final RegionRenderer renderer, final int[] sampleCount) {
if( null == fboGLAD ) {
final ImageSequence imgSeq = (ImageSequence)texSeq;
final GLContext ctx = gl.getContext();
final GLDrawable drawable = ctx.getGLDrawable();
final GLCapabilitiesImmutable reqCaps = drawable.getRequestedGLCapabilities();
final GLCapabilities caps = (GLCapabilities) reqCaps.cloneMutable();
caps.setFBO(true);
caps.setDoubleBuffered(false);
if( !useAlpha ) {
caps.setAlphaBits(0);
}
final GLDrawableFactory factory = GLDrawableFactory.getFactory(caps.getGLProfile());
fboGLAD = (GLOffscreenAutoDrawable.FBO) factory.createOffscreenAutoDrawable(
drawable.getNativeSurface().getGraphicsConfiguration().getScreen().getDevice(),
caps, null, fboWidth, fboHeight);
fboWidth = 0;
fboHeight = 0;
fboGLAD.setSharedContext(ctx);
fboGLAD.setTextureUnit(imgSeq.getTextureUnit());
fboGLAD.addGLEventListener(glel);
fboGLAD.display(); // 1st init!
final FBObject.TextureAttachment texA01 = fboGLAD.getColorbuffer(GL.GL_FRONT).getTextureAttachment();
final Texture tex = new Texture(texA01.getName(), imgSeq.getTextureTarget(),
fboGLAD.getSurfaceWidth(), fboGLAD.getSurfaceHeight(), fboGLAD.getSurfaceWidth(), fboGLAD.getSurfaceHeight(),
false /* mustFlipVertically */);
imgSeq.addFrame(gl, tex);
markStateDirty();
} else if( 0 != fboWidth*fboHeight ) {
fboGLAD.setSurfaceSize(fboWidth, fboHeight);
fboWidth = 0;
fboHeight = 0;
markStateDirty();
} else if( animateGLEL ) {
fboGLAD.display();
}
super.drawShape(gl, renderer, sampleCount);
if( animateGLEL ) {
markStateDirty(); // keep on going
}
}
示例2: initpbuffer
import com.jogamp.opengl.GLCapabilities; //导入方法依赖的package包/类
private void initpbuffer()
{
GL2 gl;
System.out.println("initpbuffer");
osdwidth=newosdwidth;
osdheight=newosdheight;
GLCapabilities caps = new GLCapabilities(null);
caps.setHardwareAccelerated(true);
caps.setDoubleBuffered(false);
caps.setAlphaBits(8);
caps.setRedBits(8);
caps.setGreenBits(8);
caps.setBlueBits(8);
caps.setDepthBits(0);
caps.setFBO(false);
System.out.println("initpbuffer2");
if (!GLDrawableFactory.getFactory(caps.getGLProfile()).canCreateGLPbuffer(null, caps.getGLProfile()))
{
throw new GLException("pbuffers unsupported");
}
if(pbuffer!=null) pbuffer.destroy();
System.out.println("initpbuffer3");
pbuffer = GLDrawableFactory.getFactory(caps.getGLProfile()).createOffscreenAutoDrawable(null,
caps,
null,
osdwidth,
osdheight
);
pbuffer.setContext(pbuffer.createContext(c.getContext()), true);
//pbuffer.setContext(c.getContext(), false);
System.out.println("initpbuffer4: pbuffers is null? " + (pbuffer==null));
if(pbuffer.getContext().makeCurrent()==GLContext.CONTEXT_NOT_CURRENT)
{
System.out.println("Couldn't make pbuffer current?");
return;
}
System.out.println("initpbuffer5");
gl = pbuffer.getGL().getGL2();
gl.glClearColor( 0.0f, 0.0f, 0.0f, 0.0f);
gl.glClear( gl.GL_COLOR_BUFFER_BIT);
gl.glViewport(0, 0, osdwidth, osdheight);
gl.glMatrixMode(GLMatrixFunc.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrtho(0,osdwidth,0,osdheight,-1.0,1.0);
gl.glMatrixMode(GLMatrixFunc.GL_MODELVIEW);
gl.glLoadIdentity();
// TODO: look into reusing same texture like OSX version...
if(osdt!=null) gl.glDeleteTextures(1, osdt, 0);
osdt = new int[1];
byte img[] = new byte[osdwidth*osdheight*4];
gl.glGenTextures(1, osdt, 0);
gl.glEnable(gl.GL_TEXTURE_RECTANGLE);
gl.glBindTexture(gl.GL_TEXTURE_RECTANGLE,osdt[0]);
gl.glTexParameteri(gl.GL_TEXTURE_RECTANGLE, gl.GL_TEXTURE_MAG_FILTER, gl.GL_LINEAR);
gl.glTexParameteri(gl.GL_TEXTURE_RECTANGLE, gl.GL_TEXTURE_MIN_FILTER, gl.GL_LINEAR);
gl.glTexImage2D(gl.GL_TEXTURE_RECTANGLE, 0, 4, osdwidth, osdheight, 0,
gl.GL_BGRA, bigendian ? gl.GL_UNSIGNED_INT_8_8_8_8_REV : gl.GL_UNSIGNED_BYTE, java.nio.ByteBuffer.wrap(img));
gl.glEnable(gl.GL_TEXTURE_RECTANGLE);
gl.glBindTexture(gl.GL_TEXTURE_RECTANGLE, osdt[0]);
gl.glCopyTexSubImage2D(gl.GL_TEXTURE_RECTANGLE, 0, 0, 0, 0, 0, osdwidth, osdheight);
gl.glDisable(gl.GL_TEXTURE_RECTANGLE);
System.out.println("initpbuffer6");
pbuffer.getContext().release();
System.out.println("initpbuffer7");
}