Back to index

nux  3.0.0
GLDeviceObjects.cpp
Go to the documentation of this file.
00001 /*
00002  * Copyright 2010 Inalogic® Inc.
00003  *
00004  * This program is free software: you can redistribute it and/or modify it
00005  * under the terms of the GNU Lesser General Public License, as
00006  * published by the  Free Software Foundation; either version 2.1 or 3.0
00007  * of the License.
00008  *
00009  * This program is distributed in the hope that it will be useful, but
00010  * WITHOUT ANY WARRANTY; without even the implied warranties of
00011  * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
00012  * PURPOSE.  See the applicable version of the GNU Lesser General Public
00013  * License for more details.
00014  *
00015  * You should have received a copy of both the GNU Lesser General Public
00016  * License along with this program. If not, see <http://www.gnu.org/licenses/>
00017  *
00018  * Authored by: Jay Taoko <jaytaoko@inalogic.com>
00019  *
00020  */
00021 
00022 
00023 #include "GLResource.h"
00024 #include "GpuDevice.h"
00025 #include "GLDeviceObjects.h"
00026 #include "GLResourceManager.h"
00027 
00028 #include "GLTextureResourceManager.h"
00029 #include "GLVertexResourceManager.h"
00030 #include "GLDeviceFrameBufferObject.h"
00031 #include "GLTemplatePrimitiveBuffer.h"
00032 #include "GraphicsEngine.h"
00033 
00034 namespace nux
00035 {
00036 
00037   extern PixelFormatInfo GPixelFormats[];
00038 //NObjectType IOpenGLResource::StaticObjectType("IOpenGLResource", 0);
00039   NUX_IMPLEMENT_OBJECT_TYPE(IOpenGLResource);
00040 
00041 
00043   /*
00044   GLSL Built-in vertex attribute(Deprecated in GLSL 1.30)
00045   -------------------------------
00046   Built-in vertex attribute name      Incompatible aliased vertex attribute index
00047   gl_Vertex                           0
00048   gl_Normal                           2
00049   gl_Color                            3
00050   gl_SecondaryColor                   4
00051   gl_FogCoord                         5
00052   gl_MultiTexCoord0                   8
00053   gl_MultiTexCoord1                   9
00054   gl_MultiTexCoord2                   10
00055   gl_MultiTexCoord3                   11
00056   gl_MultiTexCoord4                   12
00057   gl_MultiTexCoord5                   13
00058   gl_MultiTexCoord6                   14
00059   gl_MultiTexCoord7                   15
00060 
00061 
00062   gl_Vertex:
00063       - glVertex{234sifd}
00064       - glEnableClientState/glDisableClientState(GL_VERTEX_ARRAY); glVertexPointer(...);
00065   gl_Normal:
00066       - glNormal{3sifd}
00067       - glEnableClientState/glDisableClientState(GL_NORMAL_ARRAY); glNormalPointer(...);
00068   gl_Color:
00069       - glColor{34sifd}
00070       - glEnableClientState/glDisableClientState(GL_COLOR_ARRAY); glColorPointer(...);
00071   gl_SecondaryColor(requires GL_EXT_secondary_color)
00072       - glSecondaryColor3{bsifd};
00073       - glEnableClientState/glDisableClientState(SECONDARY_COLOR_ARRAY_EXT); glSecondaryColorPointerEXT(...);
00074   gl_FogCoord(requires GL_EXT_fog_coord)
00075       - glFogCoord{fd};
00076       - glEnableClientState/glDisableClientState(FOG_COORDINATE_ARRAY_EXT); glFogCoordPointerEXT(...);
00077   gl_MultiTexCoordXXX
00078       - glMultiTexCoord{234fd}
00079       - glClientActiveTextureARB(GL_TEXTUREXXX_ARB); glEnableClientState/glDisableClientState(GL_TEXTURE_COORD_ARRAY); glTexCoordPointer(...);
00080 
00081   GLSL Vertex Shader Special output variables(write)
00082   ----------------------------------------------------
00083       gl_Position     (must be written to)
00084       gl_PointSize    (may be written to)
00085       gl_ClipVertex   (may be written to)
00086 
00087   GLSL Vertex Shader Built-in varying(write)                     GLSL Fragment Shader Built-in varying(read)
00088   -------------------------------------------                     -------------------------------------------
00089       varying vec4    gl_FrontColor;                     ---->    gl_Color
00090       varying vec4    gl_BackColor;                      ---->    gl_Color
00091       varying vec4    gl_FrontSecondaryColor;            ---->    gl_SecondaryColor
00092       varying vec4    gl_BackSecondaryColor;             ---->    gl_SecondaryColor
00093       varying vec4    gl_TexCoord[];                     ---->    gl_TexCoord[]
00094       varying float   gl_FogFragCoord;                   ---->    gl_FogFragCoord
00095 
00096   GLSL Fragment Built-in variables
00097   --------------------------------
00098       vec4    gl_FragCoord    (read only)
00099       bool    gl_FrontFacing  (read only)
00100       vec2    gl_PointCoord   (read only)
00101 
00102   GLSL Fragment Shader Special output variables
00103   ---------------------------------------------
00104       vec4    gl_FragColor    (may be written to)
00105       vec4    gl_FragData[gl_MaxDrawBuffers]  (may be written to)
00106       float   gl_FragDepth    (may be written to)
00107       vec2    gl_PointCoord   (read only)
00108 
00109 
00110 
00111   Binding Semantics for Cg programs
00112   Binding Semantics for Varying Input/Output Data
00113   -----------------------------------------------
00114       Table 23 summarizes the valid binding semantics for varying input parameters
00115       in the vp30 profile.
00116        One can also use TANGENT and BINORMAL instead of TEXCOORD6 and
00117        TEXCOORD7. These binding semantics map to NV_vertex_program2 input
00118        attribute parameters. The two sets act as aliases to each other.
00119 
00120       Table 23 vp30 Varying Input Binding Semantics
00121               Binding Semantics                           Name Corresponding Data
00122               POSITION, ATTR0                             Input Vertex, Generic Attribute 0
00123               BLENDWEIGHT, ATTR1                          Input vertex weight, Generic Attribute 1
00124               NORMAL, ATTR2                               Input normal, Generic Attribute 2
00125               COLOR0, DIFFUSE, ATTR3                      Input primary color, Generic Attribute 3
00126               COLOR1, SPECULAR, ATTR4                     Input secondary color, Generic Attribute 4
00127               TESSFACTOR, FOGCOORD, ATTR5                 Input fog coordinate, Generic Attribute 5
00128               PSIZE, ATTR6                                Input point size, Generic Attribute 6
00129               BLENDINDICES, ATTR7                         Generic Attribute 7
00130               TEXCOORD0-TEXCOORD7, ATTR8-ATTR15           Input texture coordinates(texcoord0-texcoord7), Generic Attributes 8–15
00131               TANGENT, ATTR14                             Generic Attribute 14
00132               BINORMAL, ATTR15                            Generic Attribute 15
00133 
00134       Table 24 summarizes the valid binding semantics for varying output parameters
00135       in the vp30 profile. These binding semantics map to NV_vertex_program2 output registers. The
00136       two sets act as aliases to each other.
00137 
00138 
00139       Table 24 vp30 Varying Output Binding Semantics
00140               Binding Semantics                           Name Corresponding Data
00141               POSITION, HPOS                              Output position
00142               PSIZE, PSIZ                                 Output point size
00143               FOG, FOGC                                   Output fog coordinate
00144               COLOR0, COL0                                Output primary color
00145               COLOR1, COL1                                Output secondary color
00146               BCOL0                                       Output backface primary color
00147               BCOL1                                       Output backface secondary color
00148               TEXCOORD0-TEXCOORD7, TEX0-TEX7              Output texture coordinates
00149               CLP0-CL5                                    Output Clip distances
00150   */
00151 
00152 }