mirror of
https://github.com/fltk/fltk.git
synced 2026-06-06 00:22:42 +08:00
Added 8-bit palette for OpenGL (3:3:2 RGB). This should fix all of the
OpenGL colormap problems... git-svn-id: file:///fltk/svn/fltk/trunk@73 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
+19
-2
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// "$Id: Fl_Gl_Window.cxx,v 1.7 1998/10/21 14:20:06 mike Exp $"
|
// "$Id: Fl_Gl_Window.cxx,v 1.8 1998/11/08 15:55:22 mike Exp $"
|
||||||
//
|
//
|
||||||
// OpenGL window code for the Fast Light Tool Kit (FLTK).
|
// OpenGL window code for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
@@ -59,6 +59,14 @@
|
|||||||
#define SWAP_TYPE SWAP
|
#define SWAP_TYPE SWAP
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Windows may need a different color palette...
|
||||||
|
//
|
||||||
|
|
||||||
|
#if defined(WIN32) && HAVE_GL
|
||||||
|
extern HPALETTE fl_gl_palette;
|
||||||
|
#endif
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
int Fl_Gl_Window::can_do(int a, const int *b) {
|
int Fl_Gl_Window::can_do(int a, const int *b) {
|
||||||
@@ -123,6 +131,7 @@ int Fl_Gl_Window::mode(int m, const int *a) {
|
|||||||
void Fl_Gl_Window::make_current() {
|
void Fl_Gl_Window::make_current() {
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
HDC hdc = fl_private_dc(this, mode_,&g);
|
HDC hdc = fl_private_dc(this, mode_,&g);
|
||||||
|
|
||||||
if (!context) {
|
if (!context) {
|
||||||
context = wglCreateContext(hdc);
|
context = wglCreateContext(hdc);
|
||||||
if (fl_first_context) wglShareLists(fl_first_context, (GLXContext)context);
|
if (fl_first_context) wglShareLists(fl_first_context, (GLXContext)context);
|
||||||
@@ -138,6 +147,14 @@ void Fl_Gl_Window::make_current() {
|
|||||||
}
|
}
|
||||||
glXMakeCurrent(fl_display, fl_xid(this), (GLXContext)context);
|
glXMakeCurrent(fl_display, fl_xid(this), (GLXContext)context);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
# if USE_COLORMAP
|
||||||
|
if (fl_gl_palette) {
|
||||||
|
SelectPalette(fl_gc, fl_gl_palette, FALSE);
|
||||||
|
RealizePalette(fl_gc);
|
||||||
|
}
|
||||||
|
# endif // USE_COLORMAP
|
||||||
|
|
||||||
glDrawBuffer(GL_BACK);
|
glDrawBuffer(GL_BACK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -310,5 +327,5 @@ void Fl_Gl_Window::draw_overlay() {}
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: Fl_Gl_Window.cxx,v 1.7 1998/10/21 14:20:06 mike Exp $".
|
// End of "$Id: Fl_Gl_Window.cxx,v 1.8 1998/11/08 15:55:22 mike Exp $".
|
||||||
//
|
//
|
||||||
|
|||||||
+20
-2
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// "$Id: fl_color_win32.cxx,v 1.3 1998/10/21 14:20:45 mike Exp $"
|
// "$Id: fl_color_win32.cxx,v 1.4 1998/11/08 15:55:23 mike Exp $"
|
||||||
//
|
//
|
||||||
// WIN32 color functions for the Fast Light Tool Kit (FLTK).
|
// WIN32 color functions for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
@@ -47,6 +47,9 @@ Fl_XMap fl_xmap[256];
|
|||||||
Fl_XMap* fl_current_xmap;
|
Fl_XMap* fl_current_xmap;
|
||||||
|
|
||||||
HPALETTE fl_palette;
|
HPALETTE fl_palette;
|
||||||
|
#if HAVE_GL
|
||||||
|
HPALETTE fl_gl_palette;
|
||||||
|
#endif // HAVE_GL
|
||||||
|
|
||||||
static void clear_xmap(Fl_XMap& xmap) {
|
static void clear_xmap(Fl_XMap& xmap) {
|
||||||
if (xmap.pen) {
|
if (xmap.pen) {
|
||||||
@@ -214,6 +217,21 @@ fl_select_palette(void)
|
|||||||
|
|
||||||
// Create the palette:
|
// Create the palette:
|
||||||
fl_palette = CreatePalette(pPal);
|
fl_palette = CreatePalette(pPal);
|
||||||
|
|
||||||
|
#if HAVE_GL
|
||||||
|
// Now do the OpenGL palette... Any 8-bit display will want 3:3:2 RGB,
|
||||||
|
// and doing OpenGL on anything less than 8-bits is just asking for
|
||||||
|
// disappointment!
|
||||||
|
|
||||||
|
for (int i = 0; i < nColors; i ++) {
|
||||||
|
pPal->palPalEntry[i].peRed = 255 * ((i >> 5) & 7) / 7;
|
||||||
|
pPal->palPalEntry[i].peGreen = 255 * ((i >> 2) & 7) / 7;
|
||||||
|
pPal->palPalEntry[i].peBlue = 255 * (i & 3) / 3;
|
||||||
|
pPal->palPalEntry[i].peFlags = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
fl_gl_palette = CreatePalette(pPal);
|
||||||
|
#endif // HAVE_GL
|
||||||
}
|
}
|
||||||
if (fl_palette) {
|
if (fl_palette) {
|
||||||
SelectPalette(fl_gc, fl_palette, FALSE);
|
SelectPalette(fl_gc, fl_palette, FALSE);
|
||||||
@@ -225,5 +243,5 @@ fl_select_palette(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: fl_color_win32.cxx,v 1.3 1998/10/21 14:20:45 mike Exp $".
|
// End of "$Id: fl_color_win32.cxx,v 1.4 1998/11/08 15:55:23 mike Exp $".
|
||||||
//
|
//
|
||||||
|
|||||||
Reference in New Issue
Block a user