// Filename: glmisc_src.cxx // Created by: drose (09Feb04) // //////////////////////////////////////////////////////////////////// // // PANDA 3D SOFTWARE // Copyright (c) Carnegie Mellon University. All rights reserved. // // All use of this software is subject to the terms of the revised BSD // license. You should have received a copy of this license along // with this source code in a file named "LICENSE." // //////////////////////////////////////////////////////////////////// #include "pandaSystem.h" ConfigVariableBool CLP(cheap_textures) ("gl-cheap-textures", false, PRC_DESC("Configure this true to GLP(Hint) the textures into the cheapest " "possible mode.")); ConfigVariableBool CLP(ignore_clamp) ("gl-ignore-clamp", false, PRC_DESC("Configure this true to disable texture clamp mode (all textures " "repeat, a little cheaper for software renderers).")); ConfigVariableBool CLP(support_clamp_to_border) ("gl-support-clamp-to-border", true, PRC_DESC("Configure this true to enable the use of the clamp_to_border " "extension if the GL claims to support it, or false not to " "use it even if it appears to be available. (On some OpenGL " "drivers, enabling this mode can force software rendering.)")); ConfigVariableBool CLP(support_rescale_normal) ("gl-support-rescale-normal", true, PRC_DESC("Configure this true to enable the use of the rescale_normal " "extension if the GL claims to support it, or false not to use " "it even if it appears to be available. (This appears to be " "buggy on some drivers.)")); ConfigVariableBool CLP(ignore_filters) ("gl-ignore-filters", false, PRC_DESC("Configure this true to disable any texture filters at all (forcing " "point sampling).")); ConfigVariableBool CLP(ignore_mipmaps) ("gl-ignore-mipmaps", false, PRC_DESC("Configure this true to disable mipmapping only.")); ConfigVariableBool CLP(force_mipmaps) ("gl-force-mipmaps", false, PRC_DESC("Configure this true to enable full trilinear mipmapping on every " "texture, whether it asks for it or not.")); ConfigVariableBool CLP(show_texture_usage) ("gl-show-texture-usage", false, PRC_DESC("If you set this true, the screen will flash with textures drawn " "in a special mode that shows the mipmap detail level and texture " "size for each texture. Textures will be drawn in blue for " "mipmap level 0, yellow for mipmap level 1, and red for all higher " "mipmap levels. Brighter colors represent larger textures.")); ConfigVariableInt CLP(show_texture_usage_max_size) ("gl-show-texture-usage-max-size", 1024, PRC_DESC("Specifies the texture size (along one side) of the largest " "texture expected to be loaded. This controls the assignment " "of the texture color in gl-show-texture-usage mode; colors " "will be fully bright for textures of this size or larger.")); ConfigVariableBool CLP(color_mask) ("gl-color-mask", true, PRC_DESC("Configure this false if your GL's implementation of glColorMask() " "is broken (some are). This will force the use of a (presumably) " "more expensive blending operation instead.")); ConfigVariableBool CLP(support_occlusion_query) ("gl-support-occlusion-query", true, PRC_DESC("Configure this true to enable the use of the occlusion_query " "extension if the GL claims to support it, or false not to " "use it even if it appears to be available. (On some OpenGL " "drivers, enabling this mode can force software rendering.)")); ConfigVariableBool CLP(compile_and_execute) ("gl-compile-and-execute", false, PRC_DESC("Configure this true if you know your GL's implementation of " "glNewList(n, GL_COMPILE_AND_EXECUTE) works. It is " "false by default, since it is known to cause a crash with " "Intel 855GM driver 4.14.10.3889 at least. Turning this on " "*may* reduce the chug you get for preparing display lists " "for the first time, by allowing the display list to be " "rendered at the same time it is being compiled.")); ConfigVariableBool CLP(interleaved_arrays) ("gl-interleaved-arrays", false, PRC_DESC("Set this true to convert OpenGL geometry such that the " "primary data columns vertex, normal, color, and texcoord " "are interleaved into one array when possible, or false to " "render geometry as it appears in the GeomVertexData. See " "also gl-parallel-arrays.")); ConfigVariableBool CLP(parallel_arrays) ("gl-parallel-arrays", false, PRC_DESC("Set this true to convert OpenGL geometry such that each " "data column is a separate array, or false to " "render geometry as it appears in the GeomVertexData. See " "also gl-interleaved-arrays.")); ConfigVariableInt CLP(max_errors) ("gl-max-errors", 20, PRC_DESC("This is the limit on the number of OpenGL errors Panda will " "detect and report before it shuts down rendering. Set it to " "-1 for no limit.")); ConfigVariableEnum CLP(min_buffer_usage_hint) ("gl-min-buffer-usage-hint", GeomEnums::UH_stream, PRC_DESC("This specifies the first usage hint value that will be " "loaded as a vertex buffer, instead of directly from the " "client. Normally, this should be \"stream\", which means " "to load the vertex buffer using GL_STREAM_DRAW. If this " "is set to \"dynamic\", or \"static\", then only usage hints " "at that level or higher will be loaded as a vertex buffer, " "and stream or lower will be rendered directly from the " "client array. If changing this results in a remarkable " "performance improvement, you may have code that is " "creating and destroying vertex buffers every frame, instead " "of reusing the same buffers. Consider increasing " "released-vbuffer-cache-size instead.")); ConfigVariableBool CLP(debug_buffers) ("gl-debug-buffers", false, PRC_DESC("Set this true, in addition to enabling debug notify for " "glgsg, to enable debug messages about the creation and " "destruction of OpenGL vertex buffers.")); ConfigVariableBool CLP(finish) ("gl-finish", false, PRC_DESC("Set this true to force a call to glFinish() after every major " "graphics operation. This is likely to slow down rendering " "performance substantially, but it will make PStats graphs " "more accurately reflect where the graphics bottlenecks are. " "This variable is enabled only if PStats is compiled in.")); ConfigVariableBool CLP(force_depth_stencil) ("gl-force-depth-stencil", false, PRC_DESC("Temporary hack variable 7x00 vs 8x00 nVidia bug. See glGraphicsStateGuardian_src.cxx.")); ConfigVariableBool CLP(matrix_palette) ("gl-matrix-palette", false, PRC_DESC("Temporary hack variable protecting untested code. See glGraphicsStateGuardian_src.cxx.")); ConfigVariableBool CLP(force_no_error) ("gl-force-no-error", false, PRC_DESC("Avoid reporting OpenGL errors, for a small performance benefit.")); ConfigVariableBool CLP(force_no_flush) ("gl-force-no-flush", false, PRC_DESC("Avoid calling glFlush(), for a potential performance benefit. This may be a little dangerous.")); ConfigVariableBool CLP(separate_specular_color) ("gl-separate-specular-color", true, PRC_DESC("When separate specular mode is on, the specular component " "will be written to the secondary instead of the primary " "color, which is added after the texturing stage. In other " "words, the specular highlight will be unmodulated by the " "color of the texture.")); extern ConfigVariableBool CLP(parallel_arrays); void CLP(init_classes)() { CLP(GeomContext)::init_type(); CLP(GeomMunger)::init_type(); CLP(GraphicsStateGuardian)::init_type(); CLP(IndexBufferContext)::init_type(); #ifndef OPENGLES_1 CLP(ShaderContext)::init_type(); #endif CLP(TextureContext)::init_type(); CLP(VertexBufferContext)::init_type(); CLP(GraphicsBuffer)::init_type(); #ifndef OPENGLES CLP(OcclusionQueryContext)::init_type(); #endif PandaSystem *ps = PandaSystem::get_global_ptr(); ps->add_system(GLSYSTEM_NAME); // We can't add any tags defining the available OpenGL capabilities, // since we won't know those until we create a graphics context (and // the answer may be different for different contexts). }