当前位置: 首页>>代码示例>>Java>>正文


Java GLPixelStorageModes.restore方法代码示例

本文整理汇总了Java中com.jogamp.opengl.util.GLPixelStorageModes.restore方法的典型用法代码示例。如果您正苦于以下问题:Java GLPixelStorageModes.restore方法的具体用法?Java GLPixelStorageModes.restore怎么用?Java GLPixelStorageModes.restore使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在com.jogamp.opengl.util.GLPixelStorageModes的用法示例。


在下文中一共展示了GLPixelStorageModes.restore方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: readToBufferedImage

import com.jogamp.opengl.util.GLPixelStorageModes; //导入方法依赖的package包/类
/**
 * Stolen from com.jogamp.opengl.util.awt.Screenshot.readToBufferedImage()
 * 
 * JOGL 2.1.2
 */
private static BufferedImage readToBufferedImage(
    int x,int y, int width, int height, boolean alpha) throws GLException {

  int bufImgType = (alpha ? BufferedImage.TYPE_4BYTE_ABGR : BufferedImage.TYPE_3BYTE_BGR);
  int readbackType = (alpha ? GL2.GL_ABGR_EXT : GL2ES3.GL_BGR);

  // Allocate necessary storage
  BufferedImage image = new BufferedImage(width, height, bufImgType);

  GLContext glc = GLContext.getCurrent();
  GL gl = glc.getGL();

  // Set up pixel storage modes
  GLPixelStorageModes psm = new GLPixelStorageModes();
  psm.setPackAlignment(gl, 1);

  // read the BGR values into the image
  gl.glReadPixels(x, y, width, height, readbackType,
      GL.GL_UNSIGNED_BYTE,
      ByteBuffer.wrap(((DataBufferByte) image.getRaster().getDataBuffer()).getData()));

  // Restore pixel storage modes
  psm.restore(gl);

  if( glc.getGLDrawable().isGLOriented() ) {
    // Must flip BufferedImage vertically for correct results
    ImageUtil.flipImageVertically(image);
  }
  return image;
}
 
开发者ID:google,项目名称:depan,代码行数:36,代码来源:Screenshots.java

示例2: writeToTargaFile

import com.jogamp.opengl.util.GLPixelStorageModes; //导入方法依赖的package包/类
/**
 * Takes a fast screenshot of the current OpenGL drawable to a Targa
 * file. Requires the OpenGL context for the desired drawable to be
 * current. Takes the screenshot from the last assigned read buffer,
 * or the OpenGL default read buffer if none has been specified by
 * the user (GL_FRONT for single-buffered configurations and GL_BACK
 * for double-buffered configurations). This is the fastest
 * mechanism for taking a screenshot of an application. Contributed
 * by Carsten Weisse of Bytonic Software (http://bytonic.de/).
 *
 * @param file the file to write containing the screenshot
 * @param x the starting x coordinate of the screenshot, measured from the lower-left
 * @param y the starting y coordinate of the screenshot, measured from the lower-left
 * @param width the width of the desired screenshot area
 * @param height the height of the desired screenshot area
 * @param alpha whether the alpha channel should be saved. If true,
 *   requires GL_EXT_abgr extension to be present.
 *
 * @throws GLException if an OpenGL context was not current or
 *   another OpenGL-related error occurred
 * @throws IOException if an I/O error occurred while writing the
 *   file
 */
public static void writeToTargaFile(File file,
                                    int x,
                                    int y,
                                    int width,
                                    int height,
                                    boolean alpha) throws GLException, IOException {
    if (alpha) {
        checkExtABGR();
    }

    TGAWriter writer = new TGAWriter();
    writer.open(file, width, height, alpha);
    ByteBuffer bgr = writer.getImageData();

    GL gl = GLContext.getCurrentGL();

    // Set up pixel storage modes
    GLPixelStorageModes psm = new GLPixelStorageModes();
    psm.setPackAlignment(gl, 1);

    int readbackType = (alpha ? GL2.GL_ABGR_EXT : GL2GL3.GL_BGR);

    // read the BGR values into the image buffer
    gl.glReadPixels(x, y, width, height, readbackType,
            GL.GL_UNSIGNED_BYTE, bgr);

    // Restore pixel storage modes
    psm.restore(gl);

    // close the file
    writer.close();
}
 
开发者ID:madebyjeffrey,项目名称:TerraJ,代码行数:56,代码来源:Screenshot.java

示例3: readToBufferedImage

import com.jogamp.opengl.util.GLPixelStorageModes; //导入方法依赖的package包/类
/**
 * Takes a screenshot of the current OpenGL drawable to a
 * BufferedImage. Requires the OpenGL context for the desired
 * drawable to be current. Takes the screenshot from the last
 * assigned read buffer, or the OpenGL default read buffer if none
 * has been specified by the user (GL_FRONT for single-buffered
 * configurations and GL_BACK for double-buffered configurations).
 * Note that the scanlines of the resulting image are flipped
 * vertically in order to correctly match the OpenGL contents, which
 * takes time and is therefore not as fast as the Targa screenshot
 * function.
 *
 * @param x the starting x coordinate of the screenshot, measured from the lower-left
 * @param y the starting y coordinate of the screenshot, measured from the lower-left
 * @param width the width of the desired screenshot area
 * @param height the height of the desired screenshot area
 * @param alpha whether the alpha channel should be read back. If
 *   true, requires GL_EXT_abgr extension to be present.
 *
 * @throws GLException if an OpenGL context was not current or
 *   another OpenGL-related error occurred
 */
public static BufferedImage readToBufferedImage(int x,
                                                int y,
                                                int width,
                                                int height,
                                                boolean alpha) throws GLException {
    int bufImgType = (alpha ? BufferedImage.TYPE_4BYTE_ABGR : BufferedImage.TYPE_3BYTE_BGR);
    int readbackType = (alpha ? GL2.GL_ABGR_EXT : GL2GL3.GL_BGR);

    if (alpha) {
        checkExtABGR();
    }

    // Allocate necessary storage
    BufferedImage image = new BufferedImage(width, height, bufImgType);

    GLContext glc = GLContext.getCurrent();
    GL gl = glc.getGL();

    // Set up pixel storage modes
    GLPixelStorageModes psm = new GLPixelStorageModes();
    psm.setPackAlignment(gl, 1);

    // read the BGR values into the image
    gl.glReadPixels(x, y, width, height, readbackType,
            GL.GL_UNSIGNED_BYTE,
            ByteBuffer.wrap(((DataBufferByte) image.getRaster().getDataBuffer()).getData()));

    // Restore pixel storage modes
    psm.restore(gl);

    if( glc.getGLDrawable().isGLOriented() ) {
        // Must flip BufferedImage vertically for correct results
        ImageUtil.flipImageVertically(image);
    }
    return image;
}
 
开发者ID:madebyjeffrey,项目名称:TerraJ,代码行数:59,代码来源:Screenshot.java


注:本文中的com.jogamp.opengl.util.GLPixelStorageModes.restore方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。