mirror of https://github.com/fltk/fltk
FLTK widgets in OpenGL 3 windows: rewrite for driver system.
This commit is contained in:
parent
bb6072ad82
commit
0627213a82
|
@ -33,14 +33,7 @@
|
|||
# define GL_CURRENT_PROGRAM 0x8B8D
|
||||
#endif
|
||||
|
||||
// TODO: remove that from this platform-independent source file
|
||||
#ifdef _WIN32
|
||||
# include <windows.h> // for WINAPI
|
||||
#else
|
||||
# define WINAPI
|
||||
#endif
|
||||
|
||||
typedef void (WINAPI *glUseProgram_type)(GLint);
|
||||
typedef void (*glUseProgram_type)(GLint);
|
||||
static glUseProgram_type glUseProgram_f = NULL;
|
||||
|
||||
GLContext *Fl_Gl_Window_Driver::context_list = 0;
|
||||
|
|
|
@ -34,9 +34,8 @@ class Fl_Font_Descriptor;
|
|||
platform-specific derived class from this class.
|
||||
*/
|
||||
class Fl_Gl_Window_Driver {
|
||||
private:
|
||||
GLint current_prog;
|
||||
protected:
|
||||
GLint current_prog;
|
||||
Fl_Gl_Window *pWindow;
|
||||
public:
|
||||
static GLContext cached_context;
|
||||
|
|
|
@ -51,6 +51,8 @@ class Fl_WinAPI_Gl_Window_Driver : public Fl_Gl_Window_Driver {
|
|||
virtual void gl_bitmap_font(Fl_Font_Descriptor *fl_fontsize);
|
||||
virtual void get_list(Fl_Font_Descriptor *fd, int r);
|
||||
virtual int genlistsize();
|
||||
virtual void switch_to_GL1();
|
||||
virtual void switch_back();
|
||||
#if HAVE_GL_OVERLAY
|
||||
virtual void gl_hide_before(void *& overlay);
|
||||
virtual int can_do_overlay();
|
||||
|
|
|
@ -25,6 +25,10 @@
|
|||
#include "../GDI/Fl_Font.H"
|
||||
extern void fl_save_dc(HWND, HDC);
|
||||
|
||||
#ifndef GL_CURRENT_PROGRAM
|
||||
# define GL_CURRENT_PROGRAM 0x8B8D // from glew.h
|
||||
#endif
|
||||
|
||||
// STR #3119: select pixel format with composition support
|
||||
// ... and no more than 32 color bits (8 bits/color)
|
||||
// Ref: PixelFormatDescriptor Object
|
||||
|
@ -368,6 +372,22 @@ void Fl_WinAPI_Gl_Window_Driver::get_list(Fl_Font_Descriptor *fd, int r) {
|
|||
}
|
||||
|
||||
|
||||
typedef void (WINAPI *glUseProgram_type)(GLint);
|
||||
static glUseProgram_type glUseProgram_f = NULL;
|
||||
|
||||
void Fl_WinAPI_Gl_Window_Driver::switch_to_GL1() {
|
||||
if (!glUseProgram_f) {
|
||||
glUseProgram_f = (glUseProgram_type)GetProcAddress("glUseProgram");
|
||||
}
|
||||
glGetIntegerv(GL_CURRENT_PROGRAM, ¤t_prog);
|
||||
if (current_prog) glUseProgram_f(0);
|
||||
}
|
||||
|
||||
void Fl_WinAPI_Gl_Window_Driver::switch_back() {
|
||||
if (current_prog) glUseProgram_f((GLuint)current_prog);
|
||||
}
|
||||
|
||||
|
||||
FL_EXPORT HGLRC fl_win32_glcontext(GLContext rc) { return (HGLRC)rc; }
|
||||
|
||||
#endif // HAVE_GL
|
||||
|
|
Loading…
Reference in New Issue