Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
drawInfo.h
/* |
* drawInfo.h |
This file is a source include that contains a pile of capability printing code |
* |
* Created by Geoff Stahl on Wed Mar 12 2003. |
* Copyright (c) 2003 Apple Computer Inc. All rights reserved. |
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. |
("Apple") in consideration of your agreement to the following terms, and your |
use, installation, modification or redistribution of this Apple software |
constitutes acceptance of these terms. If you do not agree with these terms, |
please do not use, install, modify or redistribute this Apple software. |
In consideration of your agreement to abide by the following terms, and subject |
to these terms, Apple grants you a personal, non-exclusive license, under AppleÕs |
copyrights in this original Apple software (the "Apple Software"), to use, |
reproduce, modify and redistribute the Apple Software, with or without |
modifications, in source and/or binary forms; provided that if you redistribute |
the Apple Software in its entirety and without modifications, you must retain |
this notice and the following text and disclaimers in all such redistributions of |
the Apple Software. Neither the name, trademarks, service marks or logos of |
Apple Computer, Inc. may be used to endorse or promote products derived from the |
Apple Software without specific prior written permission from Apple. Except as |
expressly stated in this notice, no other rights or licenses, express or implied, |
are granted by Apple herein, including but not limited to any patent rights that |
may be infringed by your derivative works or by other works in which the Apple |
Software may be incorporated. |
The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO |
WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED |
WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN |
COMBINATION WITH YOUR PRODUCTS. |
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR |
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION |
OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT |
(INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN |
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* |
*/ |
// draw caps for this renderer |
// note: this bitmap technique is not the speediest and one should use textures for fonts in more proformance critical code |
static void drawCaps (pRecContext pContextInfo) |
{ // we are already in an orthographic per pixel projection |
short i, line = 1, lineStep = 12, leftEdge = -410; |
char cstr [256]; |
short index = -1; |
// match renderer, it is possible to get the wrong info if there are PCI and AGP cards with the same renderer ID, unlikely but possible |
GLint renderer = 0; |
// find current renderer to get current capabilities |
AGLPixelFormat pf = pContextInfo->aglPixFmt; // first PF |
GLint pfVS = 0, currVS = aglGetVirtualScreen (pContextInfo->aglContext); // current VS |
aglDescribePixelFormat (pf, AGL_VIRTUAL_SCREEN, &pfVS); // get VS for PF |
while ((pfVS != currVS) && pf) { // while we have PF's and the VS's do not match |
pf = aglNextPixelFormat (pf); // get next PF |
aglDescribePixelFormat (pf, AGL_VIRTUAL_SCREEN, &pfVS); // get VS for PF |
} |
if (pf) // if we matched VS (we should) |
aglDescribePixelFormat(pf, AGL_RENDERER_ID, &renderer); // for matched VS |
for (i = 0; i < gNumDisplays; i++) { |
if (renderer == gDisplayCaps[i].rendererID) |
index = i; |
} |
// draw info |
if (index == -1) // could not find current display in list |
return; |
glColor3f (1.0, 1.0, 1.0); |
sprintf (cstr, "OpenGL Capabilities:"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->boldFontList); |
glColor3f (0.9, 0.9, 0.9); |
sprintf (cstr, "Max VRAM- %ld MB (%ld MB free)", |
gDisplayCaps[index].deviceVRAM / 1024 / 1024, gDisplayCaps[index].deviceTextureRAM / 1024 / 1024); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
sprintf (cstr, "Max Texture Size- 1D/2D: %ld, 3D: %ld, Cube: %ld, Rect: %ld (%ld texture units)", |
gDisplayCaps[index].maxTextureSize, gDisplayCaps[index].max3DTextureSize, |
gDisplayCaps[index].maxCubeMapTextureSize, gDisplayCaps[index].maxRectTextureSize, |
gDisplayCaps[index].textureUnits); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
sprintf (cstr, "Features:"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->boldFontList); |
if (gDisplayCaps[index].fSpecularVector) { |
sprintf (cstr, "Specular Vector (GL_APPLE_specular_vector)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTransformHint) { |
sprintf (cstr, "Transform Hint (GL_APPLE_transform_hint)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fPackedPixels) { |
sprintf (cstr, "Packed Pixels (GL_APPLE_packed_pixels or OpenGL 1.2+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fClientStorage) { |
sprintf (cstr, "Client Storage (GL_APPLE_client_storage)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fYCbCr) { |
sprintf (cstr, "YCbCr Textures (GL_APPLE_ycbcr_422)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTextureRange) { |
sprintf (cstr, "Texture Range (AGP Texturing) (GL_APPLE_texture_range)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fFence) { |
sprintf (cstr, "Fence (GL_APPLE_fence)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fVAR) { |
sprintf (cstr, "Vertex Array Range (GL_APPLE_vertex_array_range)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fVAO) { |
sprintf (cstr, "Vertex Array Object (GL_APPLE_vertex_array_object)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fElementArray) { |
sprintf (cstr, "Element Array (GL_APPLE_element_array)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fVPEvals) { |
sprintf (cstr, "Vertex Program Evaluators (GL_APPLE_vertex_program_evaluators)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fFloatPixels) { |
sprintf (cstr, "Floating Point Pixels (GL_APPLE_float_pixels)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fFlushRenderer) { |
sprintf (cstr, "Flush Renderer (GL_APPLE_flush_render)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fPixelBuffer) { |
sprintf (cstr, "Pixel Buffers (GL_APPLE_pixel_buffer)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fImaging) { |
sprintf (cstr, "Imaging Subset (GL_ARB_imaging)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTransposeMatrix) { |
sprintf (cstr, "Transpose Matrix (GL_ARB_transpose_matrix or OpenGL 1.3+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fMultitexture) { |
sprintf (cstr, "Multitexture (GL_ARB_multitexture or OpenGL 1.3+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTexEnvAdd) { |
sprintf (cstr, "Texture Env Add (GL_ARB_texture_env_add, GL_EXT_texture_env_add or OpenGL 1.3+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTexEnvCombine) { |
sprintf (cstr, "Texture Env Combine (GL_ARB_texture_env_combine or OpenGL 1.3+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTexEnvDot3) { |
sprintf (cstr, "Texture Env Dot3 (GL_ARB_texture_env_dot3 or OpenGL 1.3+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTexEnvCrossbar) { |
sprintf (cstr, "Texture Env Crossbar (GL_ARB_texture_env_crossbar or OpenGL 1.4+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTexCubeMap) { |
sprintf (cstr, "Texture Env Cube Map (GL_ARB_texture_cube_map or OpenGL 1.4+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTexCompress) { |
sprintf (cstr, "Texture Compression (GL_ARB_texture_compression or OpenGL 1.3+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fMultisample) { |
sprintf (cstr, "Multisample (Anti-aliasing) (GL_ARB_multisample or OpenGL 1.3+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTexBorderClamp) { |
sprintf (cstr, "Texture Border Clamp (GL_ARB_texture_border_clamp or OpenGL 1.3+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fPointParam) { |
sprintf (cstr, "Point Parameters (GL_ARB_point_parameters or OpenGL 1.4+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fPointParam) { |
sprintf (cstr, "Point Parameters (GL_ARB_point_parameters or OpenGL 1.4+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fVertexProg) { |
sprintf (cstr, "Vertex Program (GL_ARB_vertex_program)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fFragmentProg) { |
sprintf (cstr, "Fragment Program (GL_ARB_fragment_program)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTexMirrorRepeat) { |
sprintf (cstr, "Texture Mirrored Repeat (GL_ARB_texture_mirrored_repeat or OpenGL 1.4+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fDepthTex) { |
sprintf (cstr, "Depth Texture (GL_ARB_depth_texture or OpenGL 1.4+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fShadow) { |
sprintf (cstr, "Shadow Support (GL_ARB_shadow or OpenGL 1.4+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fShadowAmbient) { |
sprintf (cstr, "Shadow Ambient (GL_ARB_shadow_ambient)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fVertexBlend) { |
sprintf (cstr, "Vertex Blend (GL_ARB_vertex_blend)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fWindowPos) { |
sprintf (cstr, "Window Position (GL_ARB_window_pos or OpenGL 1.4+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTex3D) { |
sprintf (cstr, "3D Texturing (GL_EXT_texture3D or OpenGL 1.2+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fClipVolHint) { |
sprintf (cstr, "Clip Volume Hint (GL_EXT_clip_volume_hint)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fRescaleNorm) { |
sprintf (cstr, "Rescale Normal (GL_EXT_rescale_normal or OpenGL 1.2+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fBlendColor) { |
sprintf (cstr, "Blend Color (GL_EXT_blend_color or GL_ARB_imaging)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fBlendMinMax) { |
sprintf (cstr, "Blend Min/Max (GL_EXT_blend_minmax or GL_ARB_imaging)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fBlendSub) { |
sprintf (cstr, "Blend Subtract (GL_EXT_blend_subtract or GL_ARB_imaging)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fCVA) { |
sprintf (cstr, "Compiled Vertex Array (GL_EXT_compiled_vertex_array)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTexLODBias) { |
sprintf (cstr, "Texture Level Of Detail Bias (GL_EXT_texture_lod_bias or OpenGL 1.4+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fABGR) { |
sprintf (cstr, "ABGR Texture Support (GL_EXT_abgr)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fBGRA) { |
sprintf (cstr, "BGRA Texture Support (GL_EXT_bgra or OpenGL 1.2+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTexFilterAniso) { |
sprintf (cstr, "Anisotropic Texture Filtering (GL_EXT_texture_filter_anisotropic)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fPaletteTex) { |
sprintf (cstr, "Paletted Textures (GL_EXT_paletted_texture)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fShareTexPalette) { |
sprintf (cstr, "Shared Texture Palette (GL_EXT_shared_texture_palette)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fSecColor) { |
sprintf (cstr, "Secondary Color (GL_EXT_secondary_color or OpenGL 1.4+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTexCompressS3TC) { |
sprintf (cstr, "Texture Compression S3TC (GL_EXT_texture_compression_s3tc)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTexRect) { |
sprintf (cstr, "Texture Rectangle (GL_EXT_texture_rectangle)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fFogCoord) { |
sprintf (cstr, "Fog Coordinate (GL_EXT_fog_coord)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fDrawRangeElements) { |
sprintf (cstr, "Draw Range Elements (GL_EXT_draw_range_elements)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fStencilWrap) { |
sprintf (cstr, "Stencil Wrap (GL_EXT_stencil_wrap or OpenGL 1.4+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fBlendFuncSep) { |
sprintf (cstr, "Separate Blend Function (GL_EXT_blend_func_separate or OpenGL 1.4+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fMultiDrawArrays) { |
sprintf (cstr, "Multi-Draw Arrays (GL_EXT_multi_draw_arrays or OpenGL 1.4+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fShadowFunc) { |
sprintf (cstr, "Shadow Function (GL_EXT_shadow_funcs)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fStencil2Side) { |
sprintf (cstr, "2-Sided Stencil (GL_EXT_stencil_two_side)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fColorSubtable) { |
sprintf (cstr, "Color Subtable ( GL_EXT_color_subtable or GL_ARB_imaging)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fConvolution) { |
sprintf (cstr, "Convolution ( GL_EXT_convolution or GL_ARB_imaging)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fHistogram) { |
sprintf (cstr, "Histogram ( GL_EXT_histogram or GL_ARB_imaging)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fColorTable) { |
sprintf (cstr, "Color Table ( GL_SGI_color_table or GL_ARB_imaging)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fColorMatrix) { |
sprintf (cstr, "Color Matrix ( GL_SGI_color_matrix or GL_ARB_imaging)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTexEdgeClamp) { |
sprintf (cstr, "Texture Edge Clamp (GL_SGIS_texture_edge_clamp or OpenGL 1.2+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTexLOD) { |
sprintf (cstr, "Texture Level Of Detail (GL_SGIS_texture_lod or OpenGL 1.2+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fPointCull) { |
sprintf (cstr, "Point Culling (GL_ATI_point_cull_mode)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTexMirrorOnce) { |
sprintf (cstr, "Texture Mirror Once (GL_ATI_texture_mirror_once)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fPNtriangles) { |
sprintf (cstr, "PN Triangles (GL_ATI_pn_triangles or GL_ATIX_pn_triangles)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTextFragShader) { |
sprintf (cstr, "Text Fragment Shader (GL_ATI_text_fragment_shader)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fBlendEqSep) { |
sprintf (cstr, "Separate Blend Equations (GL_ATI_blend_equation_separate)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fBlendWeightMinMax) { |
sprintf (cstr, "Blend Weighted Min/Max (GL_ATI_blend_weighted_minmax)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fCombine3) { |
sprintf (cstr, "Texture Env Combine 3 (GL_ATI_texture_env_combine3)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fSepStencil) { |
sprintf (cstr, "Separate Stencil (GL_ATI_separate_stencil)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fArrayRevComps4Byte) { |
sprintf (cstr, "Reverse 4 Byte Array Components (GL_ATI_array_rev_comps_in_4_bytes)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fPointSprite) { |
sprintf (cstr, "Point Sprites (GL_NV_point_sprite)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fRegCombiners) { |
sprintf (cstr, "Register Combiners (GL_NV_register_combiners)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fRegCombiners2) { |
sprintf (cstr, "Register Combiners 2 (GL_NV_register_combiners2)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTexEnvCombine4) { |
sprintf (cstr, "Texture Env Combine 4 (GL_NV_texture_env_combine4)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fBlendSquare) { |
sprintf (cstr, "Blend Square (GL_NV_blend_square or OpenGL 1.4+)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fFogDist) { |
sprintf (cstr, "Eye Radial Fog Distance (GL_NV_fog_distance)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fMultisampleFilterHint) { |
sprintf (cstr, "Multi-Sample Filter Hint (GL_NV_multisample_filter_hint)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTexGenReflect) { |
sprintf (cstr, "TexGen Reflection (GL_NV_texgen_reflection)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTexShader) { |
sprintf (cstr, "Texture Shader (GL_NV_texture_shader)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTexShader2) { |
sprintf (cstr, "Texture Shader 2 (GL_NV_texture_shader2)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fTexShader3) { |
sprintf (cstr, "Texture Shader 3 (GL_NV_texture_shader3)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fDepthClamp) { |
sprintf (cstr, "Depth Clamp (GL_NV_depth_clamp)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fLightMaxExp) { |
sprintf (cstr, "Light Max Exponent (GL_NV_light_max_exponent)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fConvBorderModes) { |
sprintf (cstr, "Convolution Border Modes (GL_HP_convolution_border_modes or GL_ARB_imaging)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
if (gDisplayCaps[index].fRasterPosClip) { |
sprintf (cstr, "Raster Position Clipping (GL_IBM_rasterpos_clip)"); |
glRasterPos3d (pContextInfo->camera.viewWidth + leftEdge, 0 + lineStep * line++ , 0); |
drawCStringGL (cstr, pContextInfo->regFontList); |
} |
} |
Copyright © 2004 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2004-03-26