gpt4 book ai didi

c++ - 初始化 bgfx 时遇到问题(使用 sdl2 窗口)

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:39:05 24 4
gpt4 key购买 nike

我正在尝试使用 SDL2 创建一个窗口并初始化 BGFX 以使用它。我目前的测试只是使用清晰的颜色将窗口设置为紫色。

我也尝试使用 CreateWindowEx 创建窗口,但也无法使用我在调用 bgfx::setViewClear 时指定的清晰颜色更新窗口。我一直在搜索开源项目以及文档和示例,但我无法弄清楚我可能缺少 bgfx 初始化/更新的哪一步。请帮忙!我已将我当前的方法作为一个小型测试主体附上。

int main(int, char**) {
SDL_InitSubSystem(SDL_INIT_VIDEO);

const int width = 800;
const int height = 600;

SDL_Window* window = nullptr;
HWND nativeWindow;

// sdl2
{
window = SDL_CreateWindow(
"test_window",
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
width, height,
0
);

SDL_SysWMinfo windowManInfo;
SDL_VERSION(&windowManInfo.version);
if (SDL_GetWindowWMInfo(window, &windowManInfo)) {
nativeWindow = windowManInfo.info.win.window;
}
}

// bgfx
{
bgfx::PlatformData platformData;
platformData.ndt = nullptr;
platformData.nwh = nativeWindow;
bgfx::setPlatformData(platformData);

// prevent creation of a renderer thread
bgfx::renderFrame();

bgfx::Init init;
init.type = bgfx::RendererType::Count;
init.resolution.width = width;
init.resolution.height = height;
init.resolution.reset = BGFX_RESET_VSYNC;
bgfx::init(init);

bgfx::setViewClear(0, BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH, 0x443355FF /*purple*/, 1.f, 0);
}

while (1) {
// sdl events
{
SDL_Event _event;
while (SDL_PollEvent(&_event) > 0);
}

bgfx::frame();
}

bgfx::shutdown();
SDL_Quit();

return 0;
}

最佳答案

在询问工作/等等之后。我终于找到了解决方案,实际上我遗漏了几件事。

  1. 因为我没有向帧添加任何渲染工作,所以 bgfx 是“智能”的,实际上不做任何事情。添加对 bgfx::touch 的调用将为渲染添加一个空基元。添加这个之后,我可以在窗口的左上角看到一个小点,它指向我遗漏的另一个调用。

  2. 我从不设定我的观点!我也只渲染到我窗口的一个像素。通过添加对 bgfx::setViewRect 的调用我能够为我的窗口 View 设置一个大小,最终出现了清晰的颜色。

关于c++ - 初始化 bgfx 时遇到问题(使用 sdl2 窗口),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55487168/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com