properly test for GL_BGR

This commit is contained in:
David Rose 2004-02-12 23:51:50 +00:00
parent 7e1501fd18
commit cfaf59d494
7 changed files with 5923 additions and 47 deletions

View File

@ -11,6 +11,7 @@
putil linmath mathutil pnmimage
#define INSTALL_HEADERS \
glext.h \
glstuff_src.cxx \
glstuff_src.h \
glstuff_undef_src.h \

View File

@ -57,12 +57,6 @@
#include <algorithm>
#if !defined(GL_BGR) && defined(GL_BGR_EXT)
// These symbols are sometimes defined as _EXT variants.
#define GL_BGR GL_BGR_EXT
#define GL_BGRA GL_BGRA_EXT
#endif
TypeHandle CLP(GraphicsStateGuardian)::_type_handle;
#if !defined(CPPPARSER) && defined(DO_PSTATS)
@ -430,6 +424,8 @@ reset() {
get_extra_extensions();
report_extensions();
_supports_bgr = has_extension("GL_EXT_bgra");
report_gl_errors();
}
@ -2046,14 +2042,12 @@ copy_pixel_buffer(PixelBuffer *pb, const DisplayRegion *dr) {
case GL_RGBA:
GLCAT.debug(false) << "GL_RGBA, ";
break;
#ifdef GL_BGR
case GL_BGR:
GLCAT.debug(false) << "GL_BGR, ";
break;
case GL_BGRA:
GLCAT.debug(false) << "GL_BGRA, ";
break;
#endif // GL_BGR
default:
GLCAT.debug(false) << "unknown, ";
break;
@ -2904,16 +2898,12 @@ compute_gl_image_size(int xsize, int ysize, int external_format, int type) {
num_components = 2;
break;
#ifdef GL_BGR
case GL_BGR:
#endif
case GL_RGB:
num_components = 3;
break;
#ifdef GL_BGR
case GL_BGRA:
#endif
case GL_RGBA:
num_components = 4;
break;
@ -2970,7 +2960,7 @@ apply_texture_immediate(Texture *tex) {
GLenum type = get_image_type(pb->get_image_type());
PTA_uchar image = pb->_image;
if (!CLP(supports_bgr)) {
if (!_supports_bgr) {
// If the GL doesn't claim to support BGR, we may have to reverse
// the component ordering of the image.
image = fix_component_ordering(external_format, pb);
@ -3202,14 +3192,12 @@ draw_pixel_buffer(PixelBuffer *pb, const DisplayRegion *dr) {
case GL_RGBA:
GLCAT.debug(false) << "GL_RGBA, ";
break;
#ifdef GL_BGR
case GL_BGR:
GLCAT.debug(false) << "GL_BGR, ";
break;
case GL_BGRA:
GLCAT.debug(false) << "GL_BGRA, ";
break;
#endif // GL_BGR
default:
GLCAT.debug(false) << "unknown, ";
break;
@ -3386,22 +3374,14 @@ get_external_image_format(PixelBuffer::Format format) {
case PixelBuffer::F_rgb8:
case PixelBuffer::F_rgb12:
case PixelBuffer::F_rgb332:
#ifdef GL_BGR
return CLP(supports_bgr) ? GL_BGR : GL_RGB;
#else
return GL_RGB;
#endif // GL_BGR
return _supports_bgr ? GL_BGR : GL_RGB;
case PixelBuffer::F_rgba:
case PixelBuffer::F_rgbm:
case PixelBuffer::F_rgba4:
case PixelBuffer::F_rgba5:
case PixelBuffer::F_rgba8:
case PixelBuffer::F_rgba12:
#ifdef GL_BGR
return CLP(supports_bgr) ? GL_BGRA : GL_RGBA;
#else
return GL_RGBA;
#endif // GL_BGR
return _supports_bgr ? GL_BGRA : GL_RGBA;
case PixelBuffer::F_luminance:
return GL_LUMINANCE;
case PixelBuffer::F_luminance_alphamask:
@ -4591,7 +4571,6 @@ ostream &output_gl_enum(ostream &out, GLenum v) {
return out << "GL_ONE_MINUS_DST_ALPHA";
case GL_SRC_ALPHA_SATURATE:
return out << "GL_SRC_ALPHA_SATURATE";
#ifdef USING_OPENGL_1_2 //[
case GL_CONSTANT_COLOR:
return out << "GL_CONSTANT_COLOR";
case GL_ONE_MINUS_CONSTANT_COLOR:
@ -4600,7 +4579,6 @@ ostream &output_gl_enum(ostream &out, GLenum v) {
return out << "GL_CONSTANT_ALPHA";
case GL_ONE_MINUS_CONSTANT_ALPHA:
return out << "GL_ONE_MINUS_CONSTANT_ALPHA";
#endif //]
/* Render Mode */
case GL_FEEDBACK:
@ -5192,7 +5170,6 @@ ostream &output_gl_enum(ostream &out, GLenum v) {
*/
/* GL 1.2 texturing */
#ifdef USING_OPENGL_1_2 //[
case GL_PACK_SKIP_IMAGES:
return out << "GL_PACK_SKIP_IMAGES";
case GL_PACK_IMAGE_HEIGHT:
@ -5211,11 +5188,8 @@ ostream &output_gl_enum(ostream &out, GLenum v) {
return out << "GL_TEXTURE_WRAP_R";
case GL_MAX_3D_TEXTURE_SIZE:
return out << "GL_MAX_3D_TEXTURE_SIZE";
#ifdef GL_TEXTURE_BINDING_3D
case GL_TEXTURE_BINDING_3D:
return out << "GL_TEXTURE_BINDING_3D";
#endif
#endif //]
/* Internal texture formats (GL 1.1) */
case GL_ALPHA4:
@ -5310,7 +5284,6 @@ ostream &output_gl_enum(ostream &out, GLenum v) {
return out << "GL_OUT_OF_MEMORY";
/* OpenGL 1.2 */
#ifdef USING_OPENGL_1_2 //[
case GL_RESCALE_NORMAL:
return out << "GL_RESCALE_NORMAL";
case GL_CLAMP_TO_EDGE:
@ -5361,7 +5334,6 @@ ostream &output_gl_enum(ostream &out, GLenum v) {
return out << "GL_TEXTURE_BASE_LEVEL";
case GL_TEXTURE_MAX_LEVEL:
return out << "GL_TEXTURE_MAX_LEVEL";
#endif //]
}
return out << (int)v;

View File

@ -303,6 +303,7 @@ protected:
int _pass_number;
pset<string> _extensions;
bool _supports_bgr;
public:
static GraphicsStateGuardian *

5912
panda/src/glstuff/glext.h Normal file

File diff suppressed because it is too large Load Diff

View File

@ -62,17 +62,6 @@ bool CLP(auto_normalize_lighting) = CONFIGOBJ.GetBool("auto-normalize-lighting",
// rendering method instead.
bool CLP(depth_offset_decals) = CONFIGOBJ.GetBool("depth-offset-decals", false);
// Configure this true to indicate the current version of GL fully
// supports textures with B, G, R ordering; false if it only supports
// R, G, B. false will always work, but true might be faster if the
// implementation supports it.
#ifdef GL_BGR
bool CLP(supports_bgr) = CONFIGOBJ.GetBool("gl-supports-bgr", false);
#else
// If it's not even defined, we can't use it.
bool CLP(supports_bgr) = false;
#endif // GL_BGR
// Configure this false if your GL's implementation of GLP(ColorMask)()
// is broken (some are). This will force the use of a (presumably)
// more expensive blending operation instead.

View File

@ -30,7 +30,6 @@ extern bool CLP(show_mipmaps);
extern bool CLP(save_mipmaps);
extern bool CLP(auto_normalize_lighting);
extern bool CLP(depth_offset_decals);
extern bool CLP(supports_bgr);
extern bool CLP(color_mask);
extern EXPCL_GL void CLP(init_classes)();

View File

@ -29,12 +29,14 @@
// #define GLCAT: a Notify category, e.g. glgsg_cat
// #define EXPCL_GL, EXPTP_GL: according to the DLL currently being compiled.
// Also, be sure you include the appropriate GL.h header file to get
// all the GL symbols declared.
// Also, be sure you include the appropriate gl.h and glu.h header
// files to get all the standard GL symbols declared. GL extensions
// are included here via glext.h.
// This file is not protected from multiple inclusion; it may need to
// be included multiple times.
#include "glext.h"
#include "glmisc_src.h"
#include "glGeomNodeContext_src.h"