5288f6d88d
This adds a publicly exposed experimental API for a 3D texture backend. There is a feature flag which can be checked for whether 3D textures are supported. Although we require OpenGL 1.2 which has 3D textures in core, GLES only provides them through an extension so the feature can be used to detect that. The textures can be created with one of two new API functions :- cogl_texture_3d_new_with_size and cogl_texture_3d_new_from_data There is also internally a new_from_bitmap function. new_from_data is implemented in terms of this function. The two constructors are effectively the only way to upload data to a 3D texture. It does not work to call glTexImage2D with the GL_TEXTURE_3D target so the virtual for cogl_texture_set_region does nothing. It would be possible to make cogl_texture_get_data do something sensible like returning all of the images as a single long image but this is not currently implemented and instead the virtual just always fails. We may want to add API specific to the 3D texture backend to get and set a sub region of the texture. All of those three functions can throw a GError. This will happen if the GPU does not support 3D textures or it does not support NPOTs and an NPOT size is requested. It will also fail if the FBO extension is not supported and the COGL_TEXTURE_NO_AUTO_MIPMAP flag is not given. This could be avoided by copying the code for the GL_GENERATE_MIPMAP TexParameter fallback, but in the interests of keeping the code simple this is not yet done. This adds a couple of functions to cogl-texture-driver for uploading 3D data and querying the 3D proxy texture. prep_gl_for_pixels_upload_full now also takes sets the GL_UNPACK_IMAGE_HEIGHT parameter so that 3D textures can have padding between the images. Whenever 3D texture is uploading, both the height of the images and the height of all of the data is specified (either explicitly or implicilty from the CoglBitmap) so that the image height can be deduced by dividing by the depth.
164 lines
5.4 KiB
XML
164 lines
5.4 KiB
XML
<?xml version="1.0"?>
|
|
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
|
|
<!ENTITY version "@VERSION@">
|
|
]>
|
|
<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
|
|
|
|
<bookinfo>
|
|
<title>COGL Reference Manual</title>
|
|
<releaseinfo>for COGL &version;</releaseinfo>
|
|
|
|
<copyright>
|
|
<year>2008</year>
|
|
<holder>OpenedHand LTD</holder>
|
|
</copyright>
|
|
|
|
<copyright>
|
|
<year>2009</year>
|
|
<year>2010</year>
|
|
<holder>Intel Corporation</holder>
|
|
</copyright>
|
|
|
|
<legalnotice>
|
|
<para>
|
|
Permission is granted to copy, distribute and/or modify this
|
|
document under the terms of the <citetitle>GNU Free
|
|
Documentation License</citetitle>, Version 1.1 or any later
|
|
version published by the Free Software Foundation with no
|
|
Invariant Sections, no Front-Cover Texts, and no Back-Cover
|
|
Texts. You may obtain a copy of the <citetitle>GNU Free
|
|
Documentation License</citetitle> from the Free Software
|
|
Foundation by visiting <ulink type="http"
|
|
url="http://www.fsf.org">their Web site</ulink> or by writing
|
|
to:
|
|
|
|
<address>
|
|
The Free Software Foundation, Inc.,
|
|
<street>59 Temple Place</street> - Suite 330,
|
|
<city>Boston</city>, <state>MA</state> <postcode>02111-1307</postcode>,
|
|
<country>USA</country>
|
|
</address>
|
|
</para>
|
|
</legalnotice>
|
|
|
|
</bookinfo>
|
|
|
|
<chapter>
|
|
<title>COGL - GL Abstraction API</title>
|
|
|
|
<section id="cogl-intro">
|
|
<title>About COGL</title>
|
|
|
|
<para>COGL is a low level OpenGL abstraction library developed for (and
|
|
part of) Clutter. It is used primarily by Clutter to provide a common
|
|
rendering API that works transparently across OpenGL >=1.4,
|
|
OpenGL ES 1.1 and OpenGL ES 2.0.</para>
|
|
|
|
</section>
|
|
|
|
<xi:include href="xml/cogl.xml"/>
|
|
<xi:include href="xml/cogl-color.xml"/>
|
|
<xi:include href="xml/cogl-texture.xml"/>
|
|
<xi:include href="xml/cogl-texture-3d.xml"/>
|
|
<xi:include href="blend-strings.xml"/>
|
|
<xi:include href="xml/cogl-material.xml"/>
|
|
<xi:include href="xml/cogl-primitives.xml"/>
|
|
<xi:include href="xml/cogl-paths.xml"/>
|
|
<xi:include href="xml/cogl-clipping.xml"/>
|
|
<xi:include href="xml/cogl-vertex-buffer.xml"/>
|
|
<xi:include href="xml/cogl-matrix.xml"/>
|
|
<xi:include href="xml/cogl-shaders.xml"/>
|
|
<xi:include href="xml/cogl-offscreen.xml"/>
|
|
<xi:include href="xml/cogl-fixed.xml"/>
|
|
|
|
</chapter>
|
|
|
|
<chapter>
|
|
<title>COGL experimental API</title>
|
|
|
|
<section id="cogl-experimental">
|
|
<title>About the experimental API</title>
|
|
|
|
<para>COGL has some experimental API developers are welcomed to play
|
|
with. The main drawback when using those is that there is no API
|
|
stability guarantee, functions flagged as experimental could be changed
|
|
or removed in future versions of the library. To use this experimental
|
|
API you will need to define
|
|
<literal>COGL_ENABLE_EXPERIMENTAL_API</literal> before including
|
|
<filename class="headerfile"><clutter/clutter.h></filename> or
|
|
<filename class="headerfile"><cogl/cogl.h></filename>.</para>
|
|
|
|
</section>
|
|
|
|
<xi:include href="xml/cogl-buffer.xml"/>
|
|
<xi:include href="xml/cogl-vector.xml"/>
|
|
|
|
</chapter>
|
|
|
|
<index>
|
|
<title>Index of all symbols</title>
|
|
<xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
|
|
</index>
|
|
|
|
<index role="deprecated">
|
|
<title>Index of deprecated symbols</title>
|
|
<xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
|
|
</index>
|
|
|
|
<index role="0.8">
|
|
<title>Index of new symbols in 0.8</title>
|
|
<xi:include href="xml/api-index-0.8.xml"><xi:fallback /></xi:include>
|
|
</index>
|
|
|
|
<index role="1.0">
|
|
<title>Index of new symbols in 1.0</title>
|
|
<xi:include href="xml/api-index-1.0.xml"><xi:fallback /></xi:include>
|
|
</index>
|
|
|
|
<index role="1.2">
|
|
<title>Index of new symbols in 1.2</title>
|
|
<xi:include href="xml/api-index-1.2.xml"><xi:fallback /></xi:include>
|
|
</index>
|
|
|
|
<index role="1.4">
|
|
<title>Index of new symbols in 1.4</title>
|
|
<xi:include href="xml/api-index-1.4.xml"><xi:fallback /></xi:include>
|
|
</index>
|
|
|
|
<appendix id="license">
|
|
<title>License</title>
|
|
|
|
<para>
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the <citetitle>GNU Library General
|
|
Public License</citetitle> as published by the Free Software
|
|
Foundation; either version 2 of the License, or (at your option)
|
|
any later version.
|
|
</para>
|
|
|
|
<para>
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
<citetitle>GNU Library General Public License</citetitle> for
|
|
more details.
|
|
</para>
|
|
|
|
<para>
|
|
You may obtain a copy of the <citetitle>GNU Library General
|
|
Public License</citetitle> from the Free Software Foundation by
|
|
visiting <ulink type="http" url="http://www.fsf.org">their Web
|
|
site</ulink> or by writing to:
|
|
|
|
<address>
|
|
Free Software Foundation, Inc.
|
|
<street>59 Temple Place</street> - Suite 330
|
|
<city>Boston</city>, <state>MA</state> <postcode>02111-1307</postcode>
|
|
<country>USA</country>
|
|
</address>
|
|
</para>
|
|
</appendix>
|
|
|
|
</book>
|