Moved render buffer options definition to own header file

This is needed for GZDoom
This commit is contained in:
alexey.lysiuk 2014-08-10 11:22:20 +03:00
parent f8dfdbd4a4
commit 2649b4c26a
2 changed files with 65 additions and 28 deletions

View file

@ -63,6 +63,7 @@
#include "textures.h"
#include "v_video.h"
#include "version.h"
#include "i_rbopts.h"
#undef Class
@ -92,6 +93,7 @@
// ---------------------------------------------------------------------------
RenderBufferOptions rbOpts;
CVAR(Bool, use_mouse, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
CVAR(Bool, m_noprescale, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
@ -123,20 +125,6 @@ void I_ShutdownJoysticks();
namespace
{
struct FrameBufferParameters
{
float pixelScale;
float shiftX;
float shiftY;
float width;
float height;
};
FrameBufferParameters s_frameBufferParameters;
const int ARGC_MAX = 64;
int s_argc;
@ -619,8 +607,8 @@ void NSEventToGameMousePosition(NSEvent* inEvent, event_t* outEvent)
const CGFloat frameHeight = GetRealContentViewSize(window).height;
const CGFloat posX = ( viewPos.x - s_frameBufferParameters.shiftX) / s_frameBufferParameters.pixelScale;
const CGFloat posY = (frameHeight - viewPos.y - s_frameBufferParameters.shiftY) / s_frameBufferParameters.pixelScale;
const CGFloat posX = ( viewPos.x - rbOpts.shiftX) / rbOpts.pixelScale;
const CGFloat posY = (frameHeight - viewPos.y - rbOpts.shiftY) / rbOpts.pixelScale;
outEvent->data1 = static_cast< int >(posX);
outEvent->data2 = static_cast< int >(posY);
@ -1091,13 +1079,13 @@ static ApplicationDelegate* s_applicationDelegate;
const float pixelScaleFactorX = displayWidth / static_cast< float >(width );
const float pixelScaleFactorY = displayHeight / static_cast< float >(height);
s_frameBufferParameters.pixelScale = std::min(pixelScaleFactorX, pixelScaleFactorY);
rbOpts.pixelScale = std::min(pixelScaleFactorX, pixelScaleFactorY);
s_frameBufferParameters.width = width * s_frameBufferParameters.pixelScale;
s_frameBufferParameters.height = height * s_frameBufferParameters.pixelScale;
rbOpts.width = width * rbOpts.pixelScale;
rbOpts.height = height * rbOpts.pixelScale;
s_frameBufferParameters.shiftX = (displayWidth - s_frameBufferParameters.width ) / 2.0f;
s_frameBufferParameters.shiftY = (displayHeight - s_frameBufferParameters.height) / 2.0f;
rbOpts.shiftX = (displayWidth - rbOpts.width ) / 2.0f;
rbOpts.shiftY = (displayHeight - rbOpts.height) / 2.0f;
[m_window setLevel:NSMainMenuWindowLevel + 1];
[m_window setStyleMask:NSBorderlessWindowMask];
@ -1108,13 +1096,13 @@ static ApplicationDelegate* s_applicationDelegate;
- (void)windowedWithWidth:(int)width height:(int)height
{
s_frameBufferParameters.pixelScale = 1.0f;
rbOpts.pixelScale = 1.0f;
s_frameBufferParameters.width = static_cast< float >(width );
s_frameBufferParameters.height = static_cast< float >(height);
rbOpts.width = static_cast< float >(width );
rbOpts.height = static_cast< float >(height);
s_frameBufferParameters.shiftX = 0.0f;
s_frameBufferParameters.shiftY = 0.0f;
rbOpts.shiftX = 0.0f;
rbOpts.shiftY = 0.0f;
const NSSize windowPixelSize = NSMakeSize(width, height);
const NSSize windowSize = IsHiDPISupported()
@ -1580,8 +1568,7 @@ static void ResetSoftwareViewport()
glViewport(0, 0, viewport[0], viewport[1]);
glClear(GL_COLOR_BUFFER_BIT);
glViewport(s_frameBufferParameters.shiftX, s_frameBufferParameters.shiftY,
s_frameBufferParameters.width, s_frameBufferParameters.height);
glViewport(rbOpts.shiftX, rbOpts.shiftY, rbOpts.width, rbOpts.height);
}
int SDL_WM_ToggleFullScreen(SDL_Surface* surface)

50
src/cocoa/i_rbopts.h Normal file
View file

@ -0,0 +1,50 @@
/*
** i_rbopts.h
**
**---------------------------------------------------------------------------
** Copyright 2014 Alexey Lysiuk
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions
** are met:
**
** 1. Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** 2. Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in the
** documentation and/or other materials provided with the distribution.
** 3. The name of the author may not be used to endorse or promote products
** derived from this software without specific prior written permission.
**
** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**---------------------------------------------------------------------------
**
*/
#ifndef SRC_COCOA_I_RBOPTS_H_INCLUDED
#define SRC_COCOA_I_RBOPTS_H_INCLUDED
struct RenderBufferOptions
{
float pixelScale;
float shiftX;
float shiftY;
float width;
float height;
};
extern RenderBufferOptions rbOpts;
#endif // SRC_COCOA_I_RBOPTS_H_INCLUDED