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:
|
#### New cvars:
|
||||||
* **r_renderAPI** - 3D API to use: 0 - OpenGL, 1 - Vulkan, 2 - DX12. Requires vid_restart.
|
* **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.
|
* **r_twinMode** - Debug feature to compare rendering output between OpenGL/Vulkan/DX12 APIs. Requires vid_restart.
|
||||||
If enabled, renderer uses multiple APIs and renders current frame to two or three side-by-side windows. 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:
|
#### Additional information:
|
||||||
* Q: How to start game with vulkan support? A: `quake3-ke.exe +set r_renderAPI 1`.
|
* 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`.
|
* 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);
|
cvar_t* vid_ypos = ri.Cvar_Get ("vid_ypos", "", 0);
|
||||||
int x, y;
|
int x, y;
|
||||||
|
|
||||||
bool show_three_windows = (r_twinMode->integer | (1 << get_render_api())) == 7;
|
if (r_twinMode->integer == 1) { // two windows
|
||||||
|
|
||||||
if (!show_three_windows) { // two windows
|
|
||||||
x = vid_xpos->integer + width + 5; // offset to the right of the main window
|
x = vid_xpos->integer + width + 5; // offset to the right of the main window
|
||||||
y = vid_ypos->integer;
|
y = vid_ypos->integer;
|
||||||
} else { // three windows
|
} else { // three windows
|
||||||
|
|
|
||||||
|
|
@ -211,7 +211,10 @@ static void InitRenderAPI( void )
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// OpenGL
|
// 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();
|
GLimp_Init();
|
||||||
|
|
||||||
GLint temp;
|
GLint temp;
|
||||||
|
|
@ -222,14 +225,20 @@ static void InitRenderAPI( void )
|
||||||
}
|
}
|
||||||
|
|
||||||
// VULKAN
|
// 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_imp_init();
|
||||||
vk_initialize();
|
vk_initialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
// DX12
|
// DX12
|
||||||
#ifndef DISABLE_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_imp_init();
|
||||||
dx_initialize();
|
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_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.
|
extern cvar_t *r_twinMode; // Debug feature to compare rendering output between OpenGL/Vulkan/DX12 APIs.
|
||||||
// This cvar specifies a bitmask that determines which APIs.
|
// Possible values:
|
||||||
// 0 - regular rendering with single window using the graphics API specified by r_renderAPI.
|
// r_twinMode=1 : one additional window is created. If the main window uses graphics API
|
||||||
// bit 0 - enables OpenGL backend
|
// defined by r_renderAPI then the additional window will use graphics API with index (r_renderAPI+1)%3
|
||||||
// bit 1 - enables Vulkan backend
|
//
|
||||||
// bit 2 - enables DX12 backend
|
// r_twinMode=2 : two additional windows are created and all 3 graphics APIs are active simultaneously.
|
||||||
// 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_railWidth;
|
extern cvar_t *r_railWidth;
|
||||||
extern cvar_t *r_railCoreWidth;
|
extern cvar_t *r_railCoreWidth;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user