⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 joglzbufferrenderer.java

📁 基于java的3d开发库。对坐java3d的朋友有很大的帮助。
💻 JAVA
字号:
//===========================================================================//=-------------------------------------------------------------------------=//= Module history:                                                         =//= - March 14 2006 - Fabio Aroca / Eduardo Mendoza: Original base version  =//= - March 14 2006 - Oscar Chavarro: quality check                         =//===========================================================================package vsdk.toolkit.render.jogl;import java.nio.FloatBuffer;import javax.media.opengl.GL;import vsdk.toolkit.media.RGBAImage;import vsdk.toolkit.media.ZBuffer;public class JoglZBufferRenderer extends JoglRenderer {    public static byte[] importZBuffer(GL gl) {        int[] view = new int[4];        gl.glGetIntegerv(GL.GL_VIEWPORT, view, 0);        int width = view[2], height = view[3];        byte[] data = new byte[4 * width * height];        FloatBuffer bb = FloatBuffer.allocate(width * height);        gl.glReadPixels( -1, -1, width, height, GL.GL_DEPTH_COMPONENT,                        GL.GL_FLOAT, bb);        gl.glFlush();        int pos = 0;        for (int i = 0; i < width * height; i++) {            long entero = (long) (bb.get(i) * ((1L << 32L) - 1));            data[pos]     = (byte) ((0x00000000FF000000L & entero) >> 24);            data[pos + 1] = (byte) ((0x0000000000FF0000L & entero) >> 16);            data[pos + 2] = (byte) ((0x000000000000FF00L & entero) >> 8);            data[pos + 3] = (byte) ((0x00000000000000FFL & entero));            pos = pos + 4;        }        return data;    }    public static ZBuffer importJOGLZBuffer(GL gl) {        int[] view = new int[4];        gl.glGetIntegerv(GL.GL_VIEWPORT, view, 0);        int width = view[2], height = view[3];        FloatBuffer bb = FloatBuffer.allocate(width * height);        gl.glReadBuffer(GL.GL_FRONT_LEFT);        gl.glPixelStorei(GL.GL_PACK_ALIGNMENT, 1);        gl.glReadPixels( -1, -1, width, height, GL.GL_DEPTH_COMPONENT,                        GL.GL_FLOAT, bb);        gl.glFlush();        ZBuffer result = new ZBuffer(width, height);        int pos = 0;        for (int y = height - 1; y >= 0; y--) {            for (int x = 0; x < width; x++) {                float f = bb.get(pos);                result.setZ(x, y, f);                pos += 1;            }        }                return result;    }}//===========================================================================//= EOF                                                                     =//===========================================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -