mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-04-10 21:44:28 +00:00
Fix an issue that made it so that the emulator could not be resized in the nowx build on linux. Also some code cleanup in the OpenGL and Software plugins.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5889 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
aa88d8b790
commit
25efe443ea
@ -22,34 +22,23 @@
|
|||||||
|
|
||||||
#include "Render.h"
|
#include "Render.h"
|
||||||
|
|
||||||
|
#include "GLUtil.h"
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
#include "OS/Win32.h"
|
#include "OS/Win32.h"
|
||||||
|
static HDC hDC = NULL; // Private GDI Device Context
|
||||||
|
static HGLRC hRC = NULL; // Permanent Rendering Context
|
||||||
|
extern HINSTANCE g_hInstance;
|
||||||
#else
|
#else
|
||||||
struct RECT
|
GLWindow GLWin;
|
||||||
{
|
|
||||||
int left, top;
|
|
||||||
int right, bottom;
|
|
||||||
};
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "GLUtil.h"
|
|
||||||
|
|
||||||
// Handles OpenGL and the window
|
// Handles OpenGL and the window
|
||||||
|
|
||||||
// Window dimensions.
|
// Window dimensions.
|
||||||
static int s_backbuffer_width;
|
static int s_backbuffer_width;
|
||||||
static int s_backbuffer_height;
|
static int s_backbuffer_height;
|
||||||
|
|
||||||
#ifndef _WIN32
|
|
||||||
GLWindow GLWin;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(_WIN32)
|
|
||||||
static HDC hDC = NULL; // Private GDI Device Context
|
|
||||||
static HGLRC hRC = NULL; // Permanent Rendering Context
|
|
||||||
extern HINSTANCE g_hInstance;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void OpenGL_SwapBuffers()
|
void OpenGL_SwapBuffers()
|
||||||
{
|
{
|
||||||
#if defined(USE_WX) && USE_WX
|
#if defined(USE_WX) && USE_WX
|
||||||
@ -76,15 +65,15 @@ u32 OpenGL_GetBackbufferHeight()
|
|||||||
void OpenGL_SetWindowText(const char *text)
|
void OpenGL_SetWindowText(const char *text)
|
||||||
{
|
{
|
||||||
#if defined(USE_WX) && USE_WX
|
#if defined(USE_WX) && USE_WX
|
||||||
// GLWin.frame->SetTitle(wxString::FromAscii(text));
|
// GLWin.frame->SetTitle(wxString::FromAscii(text));
|
||||||
#elif defined(__APPLE__)
|
#elif defined(__APPLE__)
|
||||||
cocoaGLSetTitle(GLWin.cocoaWin, text);
|
cocoaGLSetTitle(GLWin.cocoaWin, text);
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
// TODO convert text to unicode and change SetWindowTextA to SetWindowText
|
// TODO convert text to unicode and change SetWindowTextA to SetWindowText
|
||||||
SetWindowTextA(EmuWindow::GetWnd(), text);
|
SetWindowTextA(EmuWindow::GetWnd(), text);
|
||||||
#elif defined(HAVE_X11) && HAVE_X11 // GLX
|
#elif defined(HAVE_X11) && HAVE_X11
|
||||||
// Tell X to ask the window manager to set the window title. (X
|
// Tell X to ask the window manager to set the window title.
|
||||||
// itself doesn't provide window title functionality.)
|
// (X itself doesn't provide window title functionality.)
|
||||||
XStoreName(GLWin.dpy, GLWin.win, text);
|
XStoreName(GLWin.dpy, GLWin.win, text);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -127,8 +116,7 @@ void CreateXWindow (void)
|
|||||||
GLWin.attr.colormap = XCreateColormap(GLWin.dpy,
|
GLWin.attr.colormap = XCreateColormap(GLWin.dpy,
|
||||||
GLWin.parent, GLWin.vi->visual, AllocNone);
|
GLWin.parent, GLWin.vi->visual, AllocNone);
|
||||||
GLWin.attr.event_mask = ExposureMask | KeyPressMask | KeyReleaseMask |
|
GLWin.attr.event_mask = ExposureMask | KeyPressMask | KeyReleaseMask |
|
||||||
StructureNotifyMask | ResizeRedirectMask | EnterWindowMask |
|
StructureNotifyMask | EnterWindowMask | LeaveWindowMask | FocusChangeMask;
|
||||||
LeaveWindowMask | FocusChangeMask;
|
|
||||||
GLWin.attr.background_pixel = BlackPixel(GLWin.dpy, GLWin.screen);
|
GLWin.attr.background_pixel = BlackPixel(GLWin.dpy, GLWin.screen);
|
||||||
GLWin.attr.border_pixel = 0;
|
GLWin.attr.border_pixel = 0;
|
||||||
|
|
||||||
@ -147,7 +135,6 @@ void CreateXWindow (void)
|
|||||||
|
|
||||||
void DestroyXWindow(void)
|
void DestroyXWindow(void)
|
||||||
{
|
{
|
||||||
/* switch back to original desktop resolution if we were in fullscreen */
|
|
||||||
XUnmapWindow(GLWin.dpy, GLWin.win);
|
XUnmapWindow(GLWin.dpy, GLWin.win);
|
||||||
GLWin.win = 0;
|
GLWin.win = 0;
|
||||||
XFreeColormap(GLWin.dpy, GLWin.attr.colormap);
|
XFreeColormap(GLWin.dpy, GLWin.attr.colormap);
|
||||||
@ -366,7 +353,7 @@ bool OpenGL_Create(SVideoInitialize &_VideoInitialize, int _iwidth, int _iheight
|
|||||||
glXQueryVersion(GLWin.dpy, &glxMajorVersion, &glxMinorVersion);
|
glXQueryVersion(GLWin.dpy, &glxMajorVersion, &glxMinorVersion);
|
||||||
NOTICE_LOG(VIDEO, "glX-Version %d.%d", glxMajorVersion, glxMinorVersion);
|
NOTICE_LOG(VIDEO, "glX-Version %d.%d", glxMajorVersion, glxMinorVersion);
|
||||||
|
|
||||||
/* get an appropriate visual */
|
// Get an appropriate visual
|
||||||
GLWin.vi = glXChooseVisual(GLWin.dpy, GLWin.screen, attrListDbl);
|
GLWin.vi = glXChooseVisual(GLWin.dpy, GLWin.screen, attrListDbl);
|
||||||
if (GLWin.vi == NULL)
|
if (GLWin.vi == NULL)
|
||||||
{
|
{
|
||||||
@ -428,16 +415,12 @@ bool OpenGL_MakeCurrent()
|
|||||||
void OpenGL_Update()
|
void OpenGL_Update()
|
||||||
{
|
{
|
||||||
#if defined(USE_WX) && USE_WX
|
#if defined(USE_WX) && USE_WX
|
||||||
RECT rcWindow = {0};
|
GLWin.glCanvas->GetSize((int *)&GLWin.width, (int *)&GLWin.height);
|
||||||
rcWindow.right = GLWin.width;
|
s_backbuffer_width = GLWin.width;
|
||||||
rcWindow.bottom = GLWin.height;
|
s_backbuffer_height = GLWin.height;
|
||||||
|
|
||||||
// TODO fill in
|
|
||||||
|
|
||||||
#elif defined(__APPLE__)
|
#elif defined(__APPLE__)
|
||||||
RECT rcWindow = {0};
|
|
||||||
rcWindow.right = GLWin.width;
|
// Is anything needed here?
|
||||||
rcWindow.bottom = GLWin.height;
|
|
||||||
|
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
RECT rcWindow;
|
RECT rcWindow;
|
||||||
@ -452,11 +435,8 @@ void OpenGL_Update()
|
|||||||
GetWindowRect(EmuWindow::GetParentWnd(), &rcWindow);
|
GetWindowRect(EmuWindow::GetParentWnd(), &rcWindow);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------------
|
|
||||||
// Get the new window width and height
|
// Get the new window width and height
|
||||||
// ------------------
|
|
||||||
// See below for documentation
|
// See below for documentation
|
||||||
// ------------------
|
|
||||||
int width = rcWindow.right - rcWindow.left;
|
int width = rcWindow.right - rcWindow.left;
|
||||||
int height = rcWindow.bottom - rcWindow.top;
|
int height = rcWindow.bottom - rcWindow.top;
|
||||||
|
|
||||||
@ -467,8 +447,6 @@ void OpenGL_Update()
|
|||||||
s_backbuffer_width = width;
|
s_backbuffer_width = width;
|
||||||
s_backbuffer_height = height;
|
s_backbuffer_height = height;
|
||||||
}
|
}
|
||||||
|
|
||||||
#elif defined(HAVE_X11) && HAVE_X11
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,11 +71,15 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int screen;
|
#if defined(USE_WX) && USE_WX
|
||||||
#if defined(__APPLE__)
|
wxGLCanvas *glCanvas;
|
||||||
|
wxPanel *panel;
|
||||||
|
wxGLContext *glCtxt;
|
||||||
|
#elif defined(__APPLE__)
|
||||||
NSWindow *cocoaWin;
|
NSWindow *cocoaWin;
|
||||||
NSOpenGLContext *cocoaCtx;
|
NSOpenGLContext *cocoaCtx;
|
||||||
#elif defined(HAVE_X11) && HAVE_X11
|
#elif defined(HAVE_X11) && HAVE_X11
|
||||||
|
int screen;
|
||||||
Window win;
|
Window win;
|
||||||
Window parent;
|
Window parent;
|
||||||
Display *dpy;
|
Display *dpy;
|
||||||
@ -83,13 +87,8 @@ typedef struct {
|
|||||||
GLXContext ctx;
|
GLXContext ctx;
|
||||||
XSetWindowAttributes attr;
|
XSetWindowAttributes attr;
|
||||||
Common::Thread *xEventThread;
|
Common::Thread *xEventThread;
|
||||||
#endif // X11
|
|
||||||
#if defined(USE_WX) && USE_WX
|
|
||||||
wxGLCanvas *glCanvas;
|
|
||||||
wxPanel *panel;
|
|
||||||
wxGLContext *glCtxt;
|
|
||||||
#endif
|
|
||||||
int x, y;
|
int x, y;
|
||||||
|
#endif
|
||||||
unsigned int width, height;
|
unsigned int width, height;
|
||||||
} GLWindow;
|
} GLWindow;
|
||||||
|
|
||||||
|
@ -1,11 +1,7 @@
|
|||||||
# -*- python -*-
|
# -*- python -*-
|
||||||
|
|
||||||
Import('env')
|
Import('env')
|
||||||
# can we import path in one place?
|
|
||||||
import sys
|
import sys
|
||||||
sys.path.append(env['base_dir']+'SconsTests')
|
|
||||||
import utils
|
|
||||||
import platform
|
|
||||||
|
|
||||||
name = "Plugin_VideoOGL"
|
name = "Plugin_VideoOGL"
|
||||||
|
|
||||||
@ -24,41 +20,32 @@ files = [
|
|||||||
'XFB.cpp',
|
'XFB.cpp',
|
||||||
'PostProcessing.cpp',
|
'PostProcessing.cpp',
|
||||||
'FramebufferManager.cpp',
|
'FramebufferManager.cpp',
|
||||||
|
'main.cpp',
|
||||||
|
'GLUtil.cpp'
|
||||||
]
|
]
|
||||||
linkFlags = [
|
|
||||||
]
|
|
||||||
libs = [
|
libs = [
|
||||||
'videocommon', 'GLEW', 'SOIL', 'common'
|
'videocommon', 'GLEW', 'SOIL', 'common'
|
||||||
]
|
]
|
||||||
|
|
||||||
gfxenv = env.Clone()
|
gfxenv = env.Clone()
|
||||||
|
|
||||||
files += [
|
|
||||||
'main.cpp',
|
|
||||||
'GLUtil.cpp',
|
|
||||||
]
|
|
||||||
if sys.platform != 'darwin':
|
if sys.platform != 'darwin':
|
||||||
if gfxenv['HAVE_OPENCL']:
|
if gfxenv['HAVE_OPENCL']:
|
||||||
libs += [ 'OpenCL']
|
libs += [ 'OpenCL']
|
||||||
|
|
||||||
if gfxenv['HAVE_WX']:
|
if gfxenv['HAVE_WX']:
|
||||||
files += [
|
files += [
|
||||||
'GUI/ConfigDlg.cpp',
|
'GUI/ConfigDlg.cpp',
|
||||||
'Debugger/Debugger.cpp',
|
'Debugger/Debugger.cpp',
|
||||||
]
|
]
|
||||||
|
|
||||||
if sys.platform == 'darwin':
|
if sys.platform == 'darwin':
|
||||||
files += [ 'cocoaGL.m' ]
|
files += [ 'cocoaGL.m' ]
|
||||||
|
|
||||||
if sys.platform == 'win32':
|
if sys.platform == 'win32':
|
||||||
files += [ 'OS/Win32.cpp' ]
|
files += [ 'OS/Win32.cpp' ]
|
||||||
|
libs += [ env['base_dir'] + '/Externals/Cg/' ]
|
||||||
if sys.platform == 'win32':
|
|
||||||
files += [
|
|
||||||
'OS/Win32.cpp'
|
|
||||||
]
|
|
||||||
libs += [
|
|
||||||
env['base_dir'] + '/Externals/Cg/'
|
|
||||||
]
|
|
||||||
gfxenv['CPPPATH'] += libs
|
gfxenv['CPPPATH'] += libs
|
||||||
|
|
||||||
gfxenv.SharedLibrary(
|
gfxenv.SharedLibrary(
|
||||||
|
@ -20,150 +20,120 @@
|
|||||||
#include "IniFile.h"
|
#include "IniFile.h"
|
||||||
#include "Setup.h"
|
#include "Setup.h"
|
||||||
|
|
||||||
//#include "Render.h"
|
#include "GLUtil.h"
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
#include "Win32.h"
|
#include "Win32.h"
|
||||||
|
static HDC hDC = NULL; // Private GDI Device Context
|
||||||
|
static HGLRC hRC = NULL; // Permanent Rendering Context
|
||||||
|
extern HINSTANCE g_hInstance;
|
||||||
#else
|
#else
|
||||||
struct RECT
|
GLWindow GLWin;
|
||||||
{
|
|
||||||
int left, top;
|
|
||||||
int right, bottom;
|
|
||||||
};
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "GLUtil.h"
|
|
||||||
|
|
||||||
// Handles OpenGL and the window
|
// Handles OpenGL and the window
|
||||||
|
|
||||||
// Window dimensions.
|
// Window dimensions.
|
||||||
static int s_backbuffer_width;
|
static int s_backbuffer_width;
|
||||||
static int s_backbuffer_height;
|
static int s_backbuffer_height;
|
||||||
|
|
||||||
#ifndef _WIN32
|
|
||||||
GLWindow GLWin;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(_WIN32)
|
|
||||||
static HDC hDC = NULL; // Private GDI Device Context
|
|
||||||
static HGLRC hRC = NULL; // Permanent Rendering Context
|
|
||||||
extern HINSTANCE g_hInstance;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void OpenGL_SwapBuffers()
|
void OpenGL_SwapBuffers()
|
||||||
{
|
{
|
||||||
#if defined(USE_WX) && USE_WX
|
#if defined(USE_WX) && USE_WX
|
||||||
GLWin.glCanvas->SwapBuffers();
|
GLWin.glCanvas->SwapBuffers();
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
SwapBuffers(hDC);
|
SwapBuffers(hDC);
|
||||||
#elif defined(HAVE_X11) && HAVE_X11
|
#elif defined(HAVE_X11) && HAVE_X11
|
||||||
glXSwapBuffers(GLWin.dpy, GLWin.win);
|
glXSwapBuffers(GLWin.dpy, GLWin.win);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 OpenGL_GetBackbufferWidth()
|
u32 OpenGL_GetBackbufferWidth()
|
||||||
{
|
{
|
||||||
return s_backbuffer_width;
|
return s_backbuffer_width;
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 OpenGL_GetBackbufferHeight()
|
u32 OpenGL_GetBackbufferHeight()
|
||||||
{
|
{
|
||||||
return s_backbuffer_height;
|
return s_backbuffer_height;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenGL_SetWindowText(const char *text)
|
void OpenGL_SetWindowText(const char *text)
|
||||||
{
|
{
|
||||||
#if defined(USE_WX) && USE_WX
|
#if defined(USE_WX) && USE_WX
|
||||||
GLWin.frame->SetTitle(wxString::FromAscii(text));
|
// GLWin.frame->SetTitle(wxString::FromAscii(text));
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
// TODO convert text to unicode and change SetWindowTextA to SetWindowText
|
// TODO convert text to unicode and change SetWindowTextA to SetWindowText
|
||||||
SetWindowTextA(EmuWindow::GetWnd(), text);
|
SetWindowTextA(EmuWindow::GetWnd(), text);
|
||||||
#elif defined(HAVE_X11) && HAVE_X11 // GLX
|
#elif defined(HAVE_X11) && HAVE_X11
|
||||||
/**
|
// Tell X to ask the window manager to set the window title.
|
||||||
* Tell X to ask the window manager to set the window title. (X
|
// (X itself doesn't provide window title functionality.)
|
||||||
* itself doesn't provide window title functionality.)
|
XStoreName(GLWin.dpy, GLWin.win, text);
|
||||||
*/
|
|
||||||
XStoreName(GLWin.dpy, GLWin.win, text);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================================
|
|
||||||
// Draw messages on top of the screen
|
// Draw messages on top of the screen
|
||||||
// ------------------
|
|
||||||
unsigned int Callback_PeekMessages()
|
unsigned int Callback_PeekMessages()
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
// TODO: peekmessage
|
// TODO: peekmessage
|
||||||
MSG msg;
|
MSG msg;
|
||||||
while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
|
while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
|
||||||
{
|
{
|
||||||
if (msg.message == WM_QUIT)
|
if (msg.message == WM_QUIT)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
TranslateMessage(&msg);
|
TranslateMessage(&msg);
|
||||||
DispatchMessage(&msg);
|
DispatchMessage(&msg);
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
#else
|
#else
|
||||||
return FALSE;
|
return FALSE;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show the current FPS
|
// Show the current FPS
|
||||||
void UpdateFPSDisplay(const char *text)
|
void UpdateFPSDisplay(const char *text)
|
||||||
{
|
{
|
||||||
char temp[512];
|
char temp[512];
|
||||||
sprintf(temp, "SVN R%s: SW: %s", svn_rev_str, text);
|
sprintf(temp, "SVN R%s: SW: %s", svn_rev_str, text);
|
||||||
OpenGL_SetWindowText(temp);
|
OpenGL_SetWindowText(temp);
|
||||||
}
|
}
|
||||||
// =========================
|
|
||||||
|
|
||||||
|
|
||||||
// =======================================================================================
|
|
||||||
// Create rendering window.
|
// Create rendering window.
|
||||||
// Call browser: Core.cpp:EmuThread() > main.cpp:Video_Initialize()
|
// Call browser: Core.cpp:EmuThread() > main.cpp:Video_Initialize()
|
||||||
// ------------------
|
|
||||||
bool OpenGL_Create(SVideoInitialize &_VideoInitialize, int _twidth, int _theight)
|
bool OpenGL_Create(SVideoInitialize &_VideoInitialize, int _twidth, int _theight)
|
||||||
{
|
{
|
||||||
int xPos, yPos;
|
int xPos, yPos;
|
||||||
g_VideoInitialize.pRequestWindowSize(xPos, yPos, _twidth, _theight);
|
g_VideoInitialize.pRequestWindowSize(xPos, yPos, _twidth, _theight);
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
EmuWindow::SetSize(_twidth, _theight);
|
EmuWindow::SetSize(_twidth, _theight);
|
||||||
#endif
|
#endif
|
||||||
// ----------------------------
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------------
|
|
||||||
// Control window size and picture scaling
|
// Control window size and picture scaling
|
||||||
// ------------------
|
s_backbuffer_width = _twidth;
|
||||||
s_backbuffer_width = _twidth;
|
s_backbuffer_height = _theight;
|
||||||
s_backbuffer_height = _theight;
|
|
||||||
|
|
||||||
g_VideoInitialize.pPeekMessages = &Callback_PeekMessages;
|
g_VideoInitialize.pPeekMessages = &Callback_PeekMessages;
|
||||||
g_VideoInitialize.pUpdateFPSDisplay = &UpdateFPSDisplay;
|
g_VideoInitialize.pUpdateFPSDisplay = &UpdateFPSDisplay;
|
||||||
|
|
||||||
#if defined(USE_WX) && USE_WX
|
#if defined(USE_WX) && USE_WX
|
||||||
int args[] = {WX_GL_RGBA, WX_GL_DOUBLEBUFFER, WX_GL_DEPTH_SIZE, 16, 0};
|
|
||||||
|
|
||||||
wxSize size(_twidth, _theight);
|
int args[] = {WX_GL_RGBA, WX_GL_DOUBLEBUFFER, WX_GL_DEPTH_SIZE, 16, 0};
|
||||||
if ( g_VideoInitialize.pWindowHandle == NULL) {
|
|
||||||
GLWin.frame = new wxFrame((wxWindow *)NULL,
|
|
||||||
-1, _("Dolphin"), wxPoint(50,50), size);
|
|
||||||
} else {
|
|
||||||
GLWin.frame = new wxFrame((wxWindow *)g_VideoInitialize.pWindowHandle,
|
|
||||||
-1, _("Dolphin"), wxPoint(50,50), size);
|
|
||||||
}
|
|
||||||
|
|
||||||
GLWin.glCanvas = new wxGLCanvas(GLWin.frame, wxID_ANY, args,
|
wxSize size(_twidth, _theight);
|
||||||
wxPoint(0,0), size, wxSUNKEN_BORDER);
|
|
||||||
GLWin.glCtxt = new wxGLContext(GLWin.glCanvas);
|
GLWin.panel = (wxPanel *)g_VideoInitialize.pWindowHandle;
|
||||||
GLWin.frame->Show(TRUE);
|
|
||||||
GLWin.glCanvas->Show(TRUE);
|
GLWin.glCanvas = new wxGLCanvas(GLWin.panel, wxID_ANY, args,
|
||||||
|
wxPoint(0,0), size, wxSUNKEN_BORDER);
|
||||||
|
GLWin.glCtxt = new wxGLContext(GLWin.glCanvas);
|
||||||
|
GLWin.glCanvas->Show(TRUE);
|
||||||
|
|
||||||
|
GLWin.glCanvas->SetCurrent(*GLWin.glCtxt);
|
||||||
|
|
||||||
GLWin.glCanvas->SetCurrent(*GLWin.glCtxt);
|
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
// ---------------------------------------------------------------------------------------
|
|
||||||
// Create rendering window in Windows
|
// Create rendering window in Windows
|
||||||
// ----------------------
|
|
||||||
g_VideoInitialize.pWindowHandle = (void*)EmuWindow::Create((HWND)g_VideoInitialize.pWindowHandle, g_hInstance, _T("Please wait..."));
|
g_VideoInitialize.pWindowHandle = (void*)EmuWindow::Create((HWND)g_VideoInitialize.pWindowHandle, g_hInstance, _T("Please wait..."));
|
||||||
|
|
||||||
// Show the window
|
// Show the window
|
||||||
@ -175,90 +145,90 @@ bool OpenGL_Create(SVideoInitialize &_VideoInitialize, int _twidth, int _theight
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLuint PixelFormat; // Holds The Results After Searching For A Match
|
GLuint PixelFormat; // Holds The Results After Searching For A Match
|
||||||
DWORD dwExStyle; // Window Extended Style
|
DWORD dwExStyle; // Window Extended Style
|
||||||
DWORD dwStyle; // Window Style
|
DWORD dwStyle; // Window Style
|
||||||
|
|
||||||
|
RECT rcdesktop;
|
||||||
|
GetWindowRect(GetDesktopWindow(), &rcdesktop);
|
||||||
|
|
||||||
RECT rcdesktop;
|
|
||||||
GetWindowRect(GetDesktopWindow(), &rcdesktop);
|
|
||||||
|
|
||||||
dwExStyle = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;
|
dwExStyle = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;
|
||||||
dwStyle = WS_OVERLAPPEDWINDOW;
|
dwStyle = WS_OVERLAPPEDWINDOW;
|
||||||
|
|
||||||
RECT rc = {0, 0, s_backbuffer_width, s_backbuffer_height};
|
RECT rc = {0, 0, s_backbuffer_width, s_backbuffer_height};
|
||||||
AdjustWindowRectEx(&rc, dwStyle, FALSE, dwExStyle);
|
AdjustWindowRectEx(&rc, dwStyle, FALSE, dwExStyle);
|
||||||
|
|
||||||
int X = (rcdesktop.right-rcdesktop.left)/2 - (rc.right-rc.left)/2;
|
int X = (rcdesktop.right-rcdesktop.left)/2 - (rc.right-rc.left)/2;
|
||||||
int Y = (rcdesktop.bottom-rcdesktop.top)/2 - (rc.bottom-rc.top)/2;
|
int Y = (rcdesktop.bottom-rcdesktop.top)/2 - (rc.bottom-rc.top)/2;
|
||||||
|
|
||||||
// EmuWindow::GetWnd() is either the new child window or the new separate window
|
// EmuWindow::GetWnd() is either the new child window or the new separate window
|
||||||
SetWindowPos(EmuWindow::GetWnd(), NULL, X, Y, rc.right-rc.left, rc.bottom-rc.top, SWP_NOREPOSITION | SWP_NOZORDER);
|
SetWindowPos(EmuWindow::GetWnd(), NULL, X, Y, rc.right-rc.left, rc.bottom-rc.top, SWP_NOREPOSITION | SWP_NOZORDER);
|
||||||
|
|
||||||
PIXELFORMATDESCRIPTOR pfd = // pfd Tells Windows How We Want Things To Be
|
PIXELFORMATDESCRIPTOR pfd = // pfd Tells Windows How We Want Things To Be
|
||||||
{
|
{
|
||||||
sizeof(PIXELFORMATDESCRIPTOR), // Size Of This Pixel Format Descriptor
|
sizeof(PIXELFORMATDESCRIPTOR), // Size Of This Pixel Format Descriptor
|
||||||
1, // Version Number
|
1, // Version Number
|
||||||
PFD_DRAW_TO_WINDOW | // Format Must Support Window
|
PFD_DRAW_TO_WINDOW | // Format Must Support Window
|
||||||
PFD_SUPPORT_OPENGL | // Format Must Support OpenGL
|
PFD_SUPPORT_OPENGL | // Format Must Support OpenGL
|
||||||
PFD_DOUBLEBUFFER, // Must Support Double Buffering
|
PFD_DOUBLEBUFFER, // Must Support Double Buffering
|
||||||
PFD_TYPE_RGBA, // Request An RGBA Format
|
PFD_TYPE_RGBA, // Request An RGBA Format
|
||||||
32, // Select Our Color Depth
|
32, // Select Our Color Depth
|
||||||
0, 0, 0, 0, 0, 0, // Color Bits Ignored
|
0, 0, 0, 0, 0, 0, // Color Bits Ignored
|
||||||
0, // 8bit Alpha Buffer
|
0, // 8bit Alpha Buffer
|
||||||
0, // Shift Bit Ignored
|
0, // Shift Bit Ignored
|
||||||
0, // No Accumulation Buffer
|
0, // No Accumulation Buffer
|
||||||
0, 0, 0, 0, // Accumulation Bits Ignored
|
0, 0, 0, 0, // Accumulation Bits Ignored
|
||||||
24, // 24Bit Z-Buffer (Depth Buffer)
|
24, // 24Bit Z-Buffer (Depth Buffer)
|
||||||
8, // 8bit Stencil Buffer
|
8, // 8bit Stencil Buffer
|
||||||
0, // No Auxiliary Buffer
|
0, // No Auxiliary Buffer
|
||||||
PFD_MAIN_PLANE, // Main Drawing Layer
|
PFD_MAIN_PLANE, // Main Drawing Layer
|
||||||
0, // Reserved
|
0, // Reserved
|
||||||
0, 0, 0 // Layer Masks Ignored
|
0, 0, 0 // Layer Masks Ignored
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!(hDC=GetDC(EmuWindow::GetWnd()))) {
|
if (!(hDC=GetDC(EmuWindow::GetWnd()))) {
|
||||||
PanicAlert("(1) Can't create an OpenGL Device context. Fail.");
|
PanicAlert("(1) Can't create an OpenGL Device context. Fail.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(PixelFormat = ChoosePixelFormat(hDC,&pfd))) {
|
|
||||||
PanicAlert("(2) Can't find a suitable PixelFormat.");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!SetPixelFormat(hDC, PixelFormat, &pfd)) {
|
if (!(PixelFormat = ChoosePixelFormat(hDC,&pfd))) {
|
||||||
|
PanicAlert("(2) Can't find a suitable PixelFormat.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!SetPixelFormat(hDC, PixelFormat, &pfd)) {
|
||||||
PanicAlert("(3) Can't set the PixelFormat.");
|
PanicAlert("(3) Can't set the PixelFormat.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(hRC = wglCreateContext(hDC))) {
|
if (!(hRC = wglCreateContext(hDC))) {
|
||||||
PanicAlert("(4) Can't create an OpenGL rendering context.");
|
PanicAlert("(4) Can't create an OpenGL rendering context.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// --------------------------------------
|
// --------------------------------------
|
||||||
|
|
||||||
#elif defined(HAVE_X11) && HAVE_X11
|
#elif defined(HAVE_X11) && HAVE_X11
|
||||||
XVisualInfo *vi;
|
XVisualInfo *vi;
|
||||||
Colormap cmap;
|
Colormap cmap;
|
||||||
int glxMajorVersion, glxMinorVersion;
|
int glxMajorVersion, glxMinorVersion;
|
||||||
Atom wmDelete;
|
Atom wmDelete;
|
||||||
|
|
||||||
// attributes for a single buffered visual in RGBA format with at least
|
// attributes for a single buffered visual in RGBA format with at least
|
||||||
// 8 bits per color and a 24 bit depth buffer
|
// 8 bits per color and a 24 bit depth buffer
|
||||||
int attrListSgl[] = {GLX_RGBA, GLX_RED_SIZE, 8,
|
int attrListSgl[] = {GLX_RGBA, GLX_RED_SIZE, 8,
|
||||||
GLX_GREEN_SIZE, 8,
|
GLX_GREEN_SIZE, 8,
|
||||||
GLX_BLUE_SIZE, 8,
|
GLX_BLUE_SIZE, 8,
|
||||||
GLX_DEPTH_SIZE, 24,
|
GLX_DEPTH_SIZE, 24,
|
||||||
None};
|
None};
|
||||||
|
|
||||||
// attributes for a double buffered visual in RGBA format with at least
|
// attributes for a double buffered visual in RGBA format with at least
|
||||||
// 8 bits per color and a 24 bit depth buffer
|
// 8 bits per color and a 24 bit depth buffer
|
||||||
int attrListDbl[] = { GLX_RGBA, GLX_DOUBLEBUFFER,
|
int attrListDbl[] = { GLX_RGBA, GLX_DOUBLEBUFFER,
|
||||||
GLX_RED_SIZE, 8,
|
GLX_RED_SIZE, 8,
|
||||||
GLX_GREEN_SIZE, 8,
|
GLX_GREEN_SIZE, 8,
|
||||||
GLX_BLUE_SIZE, 8,
|
GLX_BLUE_SIZE, 8,
|
||||||
GLX_DEPTH_SIZE, 24,
|
GLX_DEPTH_SIZE, 24,
|
||||||
GLX_SAMPLE_BUFFERS_ARB, GLX_SAMPLES_ARB, 1, None };
|
GLX_SAMPLE_BUFFERS_ARB, GLX_SAMPLES_ARB, 1, None };
|
||||||
|
|
||||||
int attrListDefault[] = {
|
int attrListDefault[] = {
|
||||||
GLX_RGBA,
|
GLX_RGBA,
|
||||||
@ -273,11 +243,11 @@ bool OpenGL_Create(SVideoInitialize &_VideoInitialize, int _twidth, int _theight
|
|||||||
GLWin.parent = (Window)g_VideoInitialize.pWindowHandle;
|
GLWin.parent = (Window)g_VideoInitialize.pWindowHandle;
|
||||||
GLWin.screen = DefaultScreen(GLWin.dpy);
|
GLWin.screen = DefaultScreen(GLWin.dpy);
|
||||||
|
|
||||||
/* get an appropriate visual */
|
// Get an appropriate visual
|
||||||
vi = glXChooseVisual(GLWin.dpy, GLWin.screen, attrListDbl);
|
vi = glXChooseVisual(GLWin.dpy, GLWin.screen, attrListDbl);
|
||||||
if (vi == NULL)
|
if (vi == NULL)
|
||||||
{
|
{
|
||||||
vi = glXChooseVisual(GLWin.dpy, GLWin.screen, attrListSgl);
|
vi = glXChooseVisual(GLWin.dpy, GLWin.screen, attrListSgl);
|
||||||
if (vi != NULL)
|
if (vi != NULL)
|
||||||
{
|
{
|
||||||
ERROR_LOG(VIDEO, "Only Singlebuffered Visual!");
|
ERROR_LOG(VIDEO, "Only Singlebuffered Visual!");
|
||||||
@ -291,9 +261,9 @@ bool OpenGL_Create(SVideoInitialize &_VideoInitialize, int _twidth, int _theight
|
|||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
NOTICE_LOG(VIDEO, "Got Doublebuffered Visual!");
|
NOTICE_LOG(VIDEO, "Got Doublebuffered Visual!");
|
||||||
|
|
||||||
glXQueryVersion(GLWin.dpy, &glxMajorVersion, &glxMinorVersion);
|
glXQueryVersion(GLWin.dpy, &glxMajorVersion, &glxMinorVersion);
|
||||||
NOTICE_LOG(VIDEO, "glX-Version %d.%d", glxMajorVersion, glxMinorVersion);
|
NOTICE_LOG(VIDEO, "glX-Version %d.%d", glxMajorVersion, glxMinorVersion);
|
||||||
@ -313,14 +283,13 @@ bool OpenGL_Create(SVideoInitialize &_VideoInitialize, int _twidth, int _theight
|
|||||||
GLWin.attr.border_pixel = 0;
|
GLWin.attr.border_pixel = 0;
|
||||||
XkbSetDetectableAutoRepeat(GLWin.dpy, True, NULL);
|
XkbSetDetectableAutoRepeat(GLWin.dpy, True, NULL);
|
||||||
|
|
||||||
// create a window in window mode
|
// Create a window in window mode
|
||||||
GLWin.attr.event_mask = ExposureMask | KeyPressMask | KeyReleaseMask |
|
GLWin.attr.event_mask = ExposureMask | KeyPressMask | KeyReleaseMask |
|
||||||
StructureNotifyMask | ResizeRedirectMask | EnterWindowMask |
|
StructureNotifyMask | EnterWindowMask | LeaveWindowMask | FocusChangeMask;
|
||||||
LeaveWindowMask | FocusChangeMask;
|
|
||||||
GLWin.win = XCreateWindow(GLWin.dpy, GLWin.parent,
|
GLWin.win = XCreateWindow(GLWin.dpy, GLWin.parent,
|
||||||
xPos, yPos, _twidth, _theight, 0, vi->depth, InputOutput, vi->visual,
|
xPos, yPos, _twidth, _theight, 0, vi->depth, InputOutput, vi->visual,
|
||||||
CWBorderPixel | CWColormap | CWEventMask, &GLWin.attr);
|
CWBorderPixel | CWColormap | CWEventMask, &GLWin.attr);
|
||||||
// only set window title and handle wm_delete_events if in windowed mode
|
// Only set window title and handle wm_delete_events if in windowed mode
|
||||||
wmDelete = XInternAtom(GLWin.dpy, "WM_DELETE_WINDOW", True);
|
wmDelete = XInternAtom(GLWin.dpy, "WM_DELETE_WINDOW", True);
|
||||||
XSetWMProtocols(GLWin.dpy, GLWin.win, &wmDelete, 1);
|
XSetWMProtocols(GLWin.dpy, GLWin.win, &wmDelete, 1);
|
||||||
XSetStandardProperties(GLWin.dpy, GLWin.win, "GPU",
|
XSetStandardProperties(GLWin.dpy, GLWin.win, "GPU",
|
||||||
@ -335,9 +304,9 @@ bool OpenGL_Create(SVideoInitialize &_VideoInitialize, int _twidth, int _theight
|
|||||||
bool OpenGL_MakeCurrent()
|
bool OpenGL_MakeCurrent()
|
||||||
{
|
{
|
||||||
#if defined(USE_WX) && USE_WX
|
#if defined(USE_WX) && USE_WX
|
||||||
GLWin.glCanvas->SetCurrent(*GLWin.glCtxt);
|
GLWin.glCanvas->SetCurrent(*GLWin.glCtxt);
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
return wglMakeCurrent(hDC,hRC) ? true : false;
|
return wglMakeCurrent(hDC,hRC) ? true : false;
|
||||||
#elif defined(HAVE_X11) && HAVE_X11
|
#elif defined(HAVE_X11) && HAVE_X11
|
||||||
g_VideoInitialize.pRequestWindowSize(GLWin.x, GLWin.y, (int&)GLWin.width, (int&)GLWin.height);
|
g_VideoInitialize.pRequestWindowSize(GLWin.x, GLWin.y, (int&)GLWin.width, (int&)GLWin.height);
|
||||||
XMoveResizeWindow(GLWin.dpy, GLWin.win, GLWin.x, GLWin.y, GLWin.width, GLWin.height);
|
XMoveResizeWindow(GLWin.dpy, GLWin.win, GLWin.x, GLWin.y, GLWin.width, GLWin.height);
|
||||||
@ -349,12 +318,9 @@ bool OpenGL_MakeCurrent()
|
|||||||
void OpenGL_Update()
|
void OpenGL_Update()
|
||||||
{
|
{
|
||||||
#if defined(USE_WX) && USE_WX
|
#if defined(USE_WX) && USE_WX
|
||||||
RECT rcWindow = {0};
|
GLWin.glCanvas->GetSize((int *)&GLWin.width, (int *)&GLWin.height);
|
||||||
rcWindow.right = GLWin.width;
|
s_backbuffer_width = GLWin.width;
|
||||||
rcWindow.bottom = GLWin.height;
|
s_backbuffer_height = GLWin.height;
|
||||||
|
|
||||||
// TODO fill in
|
|
||||||
|
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
RECT rcWindow;
|
RECT rcWindow;
|
||||||
if (!EmuWindow::GetParentWnd())
|
if (!EmuWindow::GetParentWnd())
|
||||||
@ -368,47 +334,44 @@ void OpenGL_Update()
|
|||||||
GetWindowRect(EmuWindow::GetParentWnd(), &rcWindow);
|
GetWindowRect(EmuWindow::GetParentWnd(), &rcWindow);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------------
|
|
||||||
// Get the new window width and height
|
// Get the new window width and height
|
||||||
// ------------------
|
|
||||||
// See below for documentation
|
// See below for documentation
|
||||||
// ------------------
|
int width = rcWindow.right - rcWindow.left;
|
||||||
int width = rcWindow.right - rcWindow.left;
|
int height = rcWindow.bottom - rcWindow.top;
|
||||||
int height = rcWindow.bottom - rcWindow.top;
|
|
||||||
|
|
||||||
// If we are rendering to a child window
|
// If we are rendering to a child window
|
||||||
if (EmuWindow::GetParentWnd() != 0)
|
if (EmuWindow::GetParentWnd() != 0)
|
||||||
::MoveWindow(EmuWindow::GetWnd(), 0, 0, width, height, FALSE);
|
::MoveWindow(EmuWindow::GetWnd(), 0, 0, width, height, FALSE);
|
||||||
|
|
||||||
s_backbuffer_width = width;
|
s_backbuffer_width = width;
|
||||||
s_backbuffer_height = height;
|
s_backbuffer_height = height;
|
||||||
|
|
||||||
#elif defined(HAVE_X11) && HAVE_X11
|
#elif defined(HAVE_X11) && HAVE_X11
|
||||||
// We just check all of our events here
|
// We just check all of our events here
|
||||||
XEvent event;
|
XEvent event;
|
||||||
int num_events;
|
int num_events;
|
||||||
for (num_events = XPending(GLWin.dpy);num_events > 0;num_events--) {
|
for (num_events = XPending(GLWin.dpy);num_events > 0;num_events--) {
|
||||||
XNextEvent(GLWin.dpy, &event);
|
XNextEvent(GLWin.dpy, &event);
|
||||||
switch(event.type) {
|
switch(event.type) {
|
||||||
case ConfigureNotify:
|
case ConfigureNotify:
|
||||||
Window winDummy;
|
Window winDummy;
|
||||||
unsigned int borderDummy;
|
unsigned int borderDummy, depthDummy;
|
||||||
XGetGeometry(GLWin.dpy, GLWin.win, &winDummy, &GLWin.x, &GLWin.y,
|
XGetGeometry(GLWin.dpy, GLWin.win, &winDummy, &GLWin.x, &GLWin.y,
|
||||||
&GLWin.width, &GLWin.height, &borderDummy, &GLWin.depth);
|
&GLWin.width, &GLWin.height, &borderDummy, &depthDummy);
|
||||||
s_backbuffer_width = GLWin.width;
|
s_backbuffer_width = GLWin.width;
|
||||||
s_backbuffer_height = GLWin.height;
|
s_backbuffer_height = GLWin.height;
|
||||||
break;
|
break;
|
||||||
case ClientMessage:
|
case ClientMessage:
|
||||||
if ((unsigned long) event.xclient.data.l[0] == XInternAtom(GLWin.dpy, "WM_DELETE_WINDOW", False))
|
if ((unsigned long) event.xclient.data.l[0] == XInternAtom(GLWin.dpy, "WM_DELETE_WINDOW", False))
|
||||||
g_VideoInitialize.pCoreMessage(WM_USER_STOP);
|
g_VideoInitialize.pCoreMessage(WM_USER_STOP);
|
||||||
if ((unsigned long) event.xclient.data.l[0] == XInternAtom(GLWin.dpy, "RESIZE", False))
|
if ((unsigned long) event.xclient.data.l[0] == XInternAtom(GLWin.dpy, "RESIZE", False))
|
||||||
XMoveResizeWindow(GLWin.dpy, GLWin.win, event.xclient.data.l[1],
|
XMoveResizeWindow(GLWin.dpy, GLWin.win, event.xclient.data.l[1],
|
||||||
event.xclient.data.l[2], event.xclient.data.l[3], event.xclient.data.l[4]);
|
event.xclient.data.l[2], event.xclient.data.l[3], event.xclient.data.l[4]);
|
||||||
return;
|
return;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
@ -420,7 +383,6 @@ void OpenGL_Shutdown()
|
|||||||
{
|
{
|
||||||
#if defined(USE_WX) && USE_WX
|
#if defined(USE_WX) && USE_WX
|
||||||
delete GLWin.glCanvas;
|
delete GLWin.glCanvas;
|
||||||
delete GLWin.frame;
|
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
if (hRC) // Do We Have A Rendering Context?
|
if (hRC) // Do We Have A Rendering Context?
|
||||||
{
|
{
|
||||||
|
@ -19,9 +19,6 @@
|
|||||||
#ifndef _GLINIT_H_
|
#ifndef _GLINIT_H_
|
||||||
#define _GLINIT_H_
|
#define _GLINIT_H_
|
||||||
|
|
||||||
#if defined GLTEST && GLTEST
|
|
||||||
#include "nGLUtil.h"
|
|
||||||
#else
|
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "VideoConfig.h"
|
#include "VideoConfig.h"
|
||||||
@ -42,11 +39,12 @@
|
|||||||
#include <GL/glew.h>
|
#include <GL/glew.h>
|
||||||
#include "wx/wx.h"
|
#include "wx/wx.h"
|
||||||
#include "wx/glcanvas.h"
|
#include "wx/glcanvas.h"
|
||||||
#undef HAVE_X11
|
|
||||||
#elif defined(HAVE_X11) && HAVE_X11
|
#elif defined(HAVE_X11) && HAVE_X11
|
||||||
#define I_NEED_OS2_H // HAXXOR
|
|
||||||
#include <GL/glxew.h>
|
#include <GL/glxew.h>
|
||||||
#include <X11/XKBlib.h>
|
#include <X11/XKBlib.h>
|
||||||
|
#include <X11/Xlib.h>
|
||||||
|
#include <X11/Xutil.h>
|
||||||
|
#include <X11/keysym.h>
|
||||||
#else
|
#else
|
||||||
#include <GL/glew.h>
|
#include <GL/glew.h>
|
||||||
#endif // end USE_WX
|
#endif // end USE_WX
|
||||||
@ -67,31 +65,25 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#if defined(HAVE_X11) && HAVE_X11
|
|
||||||
#include <X11/Xlib.h>
|
|
||||||
#include <X11/Xutil.h>
|
|
||||||
#include <X11/keysym.h>
|
|
||||||
#endif // X11
|
|
||||||
|
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int screen;
|
#if defined(USE_WX) && USE_WX
|
||||||
#if defined(HAVE_X11) && HAVE_X11
|
wxGLCanvas *glCanvas;
|
||||||
Window win;
|
wxPanel *panel;
|
||||||
Window parent;
|
wxGLContext *glCtxt;
|
||||||
|
#elif defined(HAVE_X11) && HAVE_X11
|
||||||
|
int screen;
|
||||||
|
Window win;
|
||||||
|
Window parent;
|
||||||
Display *dpy;
|
Display *dpy;
|
||||||
GLXContext ctx;
|
GLXContext ctx;
|
||||||
XSetWindowAttributes attr;
|
XSetWindowAttributes attr;
|
||||||
#elif defined(USE_WX) && USE_WX
|
int x, y;
|
||||||
wxGLCanvas *glCanvas;
|
|
||||||
wxFrame *frame;
|
|
||||||
wxGLContext *glCtxt;
|
|
||||||
#endif
|
#endif
|
||||||
int x, y;
|
unsigned int width, height;
|
||||||
unsigned int width, height;
|
|
||||||
unsigned int depth;
|
|
||||||
} GLWindow;
|
} GLWindow;
|
||||||
|
|
||||||
extern GLWindow GLWin;
|
extern GLWindow GLWin;
|
||||||
@ -135,6 +127,4 @@ bool OpenGL_ReportFBOError(const char *function, const char *file, int line);
|
|||||||
#define GL_REPORT_ERRORD()
|
#define GL_REPORT_ERRORD()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // GLTEST ??
|
|
||||||
|
|
||||||
#endif // _GLINIT_H_
|
#endif // _GLINIT_H_
|
||||||
|
@ -1,11 +1,7 @@
|
|||||||
# -*- python -*-
|
# -*- python -*-
|
||||||
|
|
||||||
Import('env')
|
Import('env')
|
||||||
# can we import path in one place?
|
|
||||||
import sys
|
import sys
|
||||||
sys.path.append(env['base_dir']+'SconsTests')
|
|
||||||
import utils
|
|
||||||
import platform
|
|
||||||
|
|
||||||
name = "Plugin_VideoSoftware"
|
name = "Plugin_VideoSoftware"
|
||||||
|
|
||||||
@ -25,38 +21,30 @@ files = [
|
|||||||
'Rasterizer.cpp',
|
'Rasterizer.cpp',
|
||||||
'RasterFont.cpp',
|
'RasterFont.cpp',
|
||||||
'Renderer.cpp',
|
'Renderer.cpp',
|
||||||
'SetupUnit.cpp',
|
'SetupUnit.cpp',
|
||||||
'Statistics.cpp',
|
'Statistics.cpp',
|
||||||
'Tev.cpp',
|
'Tev.cpp',
|
||||||
'TextureEncoder.cpp',
|
'TextureEncoder.cpp',
|
||||||
'TextureSampler.cpp',
|
'TextureSampler.cpp',
|
||||||
'TransformUnit.cpp',
|
'TransformUnit.cpp',
|
||||||
'VertexFormatConverter.cpp',
|
'VertexFormatConverter.cpp',
|
||||||
'VertexLoader.cpp',
|
'VertexLoader.cpp',
|
||||||
'VideoConfig.cpp',
|
'VideoConfig.cpp',
|
||||||
'XFMemLoader.cpp',
|
'XFMemLoader.cpp',
|
||||||
]
|
|
||||||
linkFlags = [
|
|
||||||
]
|
]
|
||||||
|
|
||||||
libs = [
|
libs = [
|
||||||
'videocommon', 'GLEW', 'SOIL', 'common'
|
'videocommon', 'GLEW', 'SOIL', 'common'
|
||||||
]
|
]
|
||||||
|
|
||||||
gfxenv = env.Clone()
|
gfxenv = env.Clone()
|
||||||
|
|
||||||
if sys.platform == 'win32':
|
|
||||||
files += [ 'Win32.cpp' ]
|
|
||||||
|
|
||||||
if sys.platform == 'darwin':
|
if sys.platform == 'darwin':
|
||||||
files += [ 'cocoaGL.m', ]
|
files += [ 'cocoaGL.m', ]
|
||||||
|
|
||||||
if sys.platform == 'win32':
|
if sys.platform == 'win32':
|
||||||
files += [
|
files += [ 'Win32.cpp' ]
|
||||||
'Win32.cpp'
|
libs += [ env['base_dir'] + '/Externals/Cg/' ]
|
||||||
]
|
|
||||||
libs += [
|
|
||||||
env['base_dir'] + '/Externals/Cg/'
|
|
||||||
]
|
|
||||||
gfxenv['CPPPATH'] += libs
|
gfxenv['CPPPATH'] += libs
|
||||||
|
|
||||||
gfxenv.SharedLibrary(
|
gfxenv.SharedLibrary(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user