测试代码
This commit is contained in:
26
src/main.cpp
26
src/main.cpp
@@ -6,6 +6,7 @@
|
||||
#include "SDL3/SDL_video.h"
|
||||
#include "SDL3/SDL_log.h"
|
||||
#include "SDL3/SDL_timer.h"
|
||||
#include "SDL3/SDL_gpu.h"
|
||||
#include "SDL3_ttf/SDL_ttf.h"
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
@@ -15,12 +16,13 @@ int main(int argc, char* argv[]) {
|
||||
SDL_Log("Could not create window: %s", SDL_GetError());
|
||||
return 1;
|
||||
}
|
||||
SDL_Renderer* renderer = SDL_CreateRenderer(window, "direct3d11");
|
||||
SDL_Renderer* renderer = SDL_CreateRenderer(window, "direct3d12,metal,vulkan");
|
||||
if (renderer == nullptr) {
|
||||
SDL_Log("Could not create renderer: %s", SDL_GetError());
|
||||
SDL_DestroyWindow(window);
|
||||
return 1;
|
||||
}
|
||||
auto gpu_device = (SDL_GPUDevice*)SDL_GetPointerProperty(SDL_GetRendererProperties(renderer), SDL_PROP_RENDERER_GPU_DEVICE_POINTER, NULL);
|
||||
|
||||
TTF_Init();
|
||||
|
||||
@@ -32,7 +34,7 @@ int main(int argc, char* argv[]) {
|
||||
return 1;
|
||||
}
|
||||
// 设置字体hinting为轻量级
|
||||
TTF_SetFontHinting(font, TTF_HINTING_LIGHT);
|
||||
TTF_SetFontHinting(font, TTF_HINTING_LIGHT_SUBPIXEL);
|
||||
// 设置字体为 SDF 模式
|
||||
// TTF_SetFontSDF(font, true);
|
||||
// 设置渲染器的混合模式
|
||||
@@ -40,7 +42,7 @@ int main(int argc, char* argv[]) {
|
||||
|
||||
SDL_Color color = { 255, 255, 255, 255 }; // 白色文字
|
||||
SDL_Color bg_color = { 0, 0, 0, 255 }; // 背景颜色
|
||||
auto text_surface = TTF_RenderText_LCD_Wrapped(font, "Hello World!\n你好,世界!", 0, color, bg_color, 0);
|
||||
auto text_surface = TTF_RenderText_LCD_Wrapped(font, "Hello World!\n你好,世界!🆒", 0, color, bg_color, 0);
|
||||
if (text_surface == nullptr) {
|
||||
SDL_Log("Could not render text: %s", SDL_GetError());
|
||||
TTF_CloseFont(font);
|
||||
@@ -65,6 +67,23 @@ int main(int argc, char* argv[]) {
|
||||
SDL_GetTextureSize(texture, &text_width, &text_height);
|
||||
SDL_FRect dest_rect = { 0, 0, text_width, text_height };
|
||||
|
||||
SDL_GPUShaderCreateInfo shader_info;
|
||||
shader_info.code_size = 10;
|
||||
shader_info.code = nullptr; // 这里需要填入实际的着色器代码
|
||||
shader_info.entrypoint = "main";
|
||||
shader_info.format = SDL_GPU_SHADERFORMAT_DXIL;
|
||||
shader_info.stage = SDL_GPU_SHADERSTAGE_FRAGMENT;
|
||||
shader_info.num_samplers = 0;
|
||||
shader_info.num_storage_textures = 0;
|
||||
shader_info.num_uniform_buffers = 0;
|
||||
shader_info.num_storage_buffers = 0;
|
||||
auto shader = SDL_CreateGPUShader(gpu_device, &shader_info);
|
||||
|
||||
SDL_GPURenderStateDesc desc;
|
||||
SDL_INIT_INTERFACE(&desc);
|
||||
desc.fragment_shader = shader;
|
||||
auto render_state = SDL_CreateGPURenderState(renderer, &desc);
|
||||
|
||||
SDL_Event e;
|
||||
bool running = true;
|
||||
while (running) {
|
||||
@@ -79,6 +98,7 @@ int main(int argc, char* argv[]) {
|
||||
SDL_RenderClear(renderer); // 先清屏
|
||||
SDL_RenderTexture(renderer, texture, nullptr, &dest_rect); // 然后绘制文字
|
||||
SDL_RenderPresent(renderer); // 最后呈现
|
||||
SDL_RenderLines(renderer, nullptr, 0); // 确保没有多余的线条
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(16)); // ~60 FPS
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user