Simplified r_twinMode usage.
This commit is contained in:
parent
abe1efe3aa
commit
109a022d7a
|
|
@ -16,11 +16,10 @@ Initially DirectX 12 backend was an exercise to learn this graphics API. It turn
|
|||
#### New cvars:
|
||||
* **r_renderAPI** - 3D API to use: 0 - OpenGL, 1 - Vulkan, 2 - DX12. Requires vid_restart.
|
||||
|
||||
* **r_twinMode** - Debug feature to compare rendering output between OpenGL/Vulkan/DX12 APIs.
|
||||
If enabled, renderer uses multiple APIs and renders current frame to two or three side-by-side windows. Requires vid_restart.
|
||||
* **r_twinMode** - Debug feature to compare rendering output between OpenGL/Vulkan/DX12 APIs. Requires vid_restart.
|
||||
* r_twinMode=1 : one additional window is created. If the main window uses graphics API defined by r_renderAPI then the additional window will use graphics API with index (r_renderAPI+1)%3
|
||||
* r_twinMode=2 : two additional windows are created and all 3 graphics APIs are active simultaneously.
|
||||
|
||||
*r_twinMode* is a bitmask. The following values can be combined to enable additional graphics backends: 1 - OpenGL, 2 - Vulkan, 4 - DX12. For example: r_twinMode=7 (1+2+4) - enables all backends and renders to 3 windows. r_twinMode=1 - enables Vulkan backend in addition to active backend defined by *r_renderAPI*.
|
||||
|
||||
#### Additional information:
|
||||
* Q: How to start game with vulkan support? A: `quake3-ke.exe +set r_renderAPI 1`.
|
||||
* Q: How to enable vulkan support from Q3 console? A: `\r_renderAPI 1` then `\vid_restart`.
|
||||
|
|
|
|||
|
|
@ -494,9 +494,7 @@ static HWND create_twin_window(int width, int height, RenderApi render_api)
|
|||
cvar_t* vid_ypos = ri.Cvar_Get ("vid_ypos", "", 0);
|
||||
int x, y;
|
||||
|
||||
bool show_three_windows = (r_twinMode->integer | (1 << get_render_api())) == 7;
|
||||
|
||||
if (!show_three_windows) { // two windows
|
||||
if (r_twinMode->integer == 1) { // two windows
|
||||
x = vid_xpos->integer + width + 5; // offset to the right of the main window
|
||||
y = vid_ypos->integer;
|
||||
} else { // three windows
|
||||
|
|
|
|||
|
|
@ -211,7 +211,10 @@ static void InitRenderAPI( void )
|
|||
#endif
|
||||
|
||||
// OpenGL
|
||||
if (get_render_api() == RENDER_API_GL || (r_twinMode->integer&1)) {
|
||||
if (get_render_api() == RENDER_API_GL ||
|
||||
r_twinMode->integer == 1 && get_render_api() == RENDER_API_DX ||
|
||||
r_twinMode->integer == 2)
|
||||
{
|
||||
GLimp_Init();
|
||||
|
||||
GLint temp;
|
||||
|
|
@ -222,14 +225,20 @@ static void InitRenderAPI( void )
|
|||
}
|
||||
|
||||
// VULKAN
|
||||
if (get_render_api() == RENDER_API_VK || (r_twinMode->integer&2)) {
|
||||
if (get_render_api() == RENDER_API_VK ||
|
||||
r_twinMode->integer == 1 && get_render_api() == RENDER_API_GL ||
|
||||
r_twinMode->integer == 2)
|
||||
{
|
||||
vk_imp_init();
|
||||
vk_initialize();
|
||||
}
|
||||
|
||||
// DX12
|
||||
#ifndef DISABLE_DX12
|
||||
if (get_render_api() == RENDER_API_DX || (r_twinMode->integer&4)) {
|
||||
if (get_render_api() == RENDER_API_DX ||
|
||||
r_twinMode->integer == 1 && get_render_api() == RENDER_API_VK ||
|
||||
r_twinMode->integer == 2)
|
||||
{
|
||||
dx_imp_init();
|
||||
dx_initialize();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -958,14 +958,12 @@ RenderApi get_render_api();
|
|||
//
|
||||
extern cvar_t *r_renderAPI; // 3D API to use: 0 - OpenGL, 1 - Vulkan, 2 - DX12
|
||||
|
||||
extern cvar_t *r_twinMode; // Allows to render the same frame in different windows using different graphics APIs.
|
||||
// This cvar specifies a bitmask that determines which APIs.
|
||||
// 0 - regular rendering with single window using the graphics API specified by r_renderAPI.
|
||||
// bit 0 - enables OpenGL backend
|
||||
// bit 1 - enables Vulkan backend
|
||||
// bit 2 - enables DX12 backend
|
||||
// Combinations of the above values are allowed, for example, r_twinMode=7 creates three diffent
|
||||
// windows using all the supported APIs.
|
||||
extern cvar_t *r_twinMode; // Debug feature to compare rendering output between OpenGL/Vulkan/DX12 APIs.
|
||||
// Possible values:
|
||||
// r_twinMode=1 : one additional window is created. If the main window uses graphics API
|
||||
// defined by r_renderAPI then the additional window will use graphics API with index (r_renderAPI+1)%3
|
||||
//
|
||||
// r_twinMode=2 : two additional windows are created and all 3 graphics APIs are active simultaneously.
|
||||
|
||||
extern cvar_t *r_railWidth;
|
||||
extern cvar_t *r_railCoreWidth;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user