在这里看到这篇文章关于使用SDL_ttf在游戏中渲染文本.但是,这种方法需要每个帧调用SDL_CreateTextureFromSurface()以及SDL_FreeSurface()和SDL_DestroyTexture().
创建纹理(并且可能随后必须将它们发送到GPU)每一帧都会对我的性能产生重大影响吗?
使用SDL_ttf只是用我的整个渲染字符集创建一个纹理然后自己从那里开始逐个字符?
编辑:我希望只用美国英语(基本ASCII)渲染简单的等宽字体.
我正在尝试使用CLion来创建一个SDL2项目.问题是使用#include时无法找到SDL标头.
我的CMakeLists.txt文件:
cmake_minimum_required(VERSION 2.8.4)
project(ChickenShooter)
set(SDL2_INCLUDE_DIR C:/SDL/SDL2-2.0.3/include)
set(SDL2_LIBRARY C:/SDL/SDL2-2.0.3/lib/x64)
include_directories(${SDL2_INCLUDE_DIR})
set(SOURCE_FILES main.cpp)
add_executable(ChickenShooter ${SOURCE_FILES})
target_link_libraries(ChickenShooter ${SDL2_LIBRARY})
Run Code Online (Sandbox Code Playgroud)
我的测试main.cpp:
#include <iostream>
#include "SDL.h" /* This one can't be found */
int main(){
if (SDL_Init(SDL_INIT_VIDEO) != 0){
std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl;
return 1;
}
SDL_Quit();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
谢谢你能给我的任何帮助.
编辑:我正在使用Windows,而CLion配置为使用cygwin64.
我正在关注这个问题.但是我的cmake面孔有错误:
-- Configuring done
CMake Error at CMakeLists.txt:18 (add_executable):
Target "main" links to item "-L/usr/lib/x86_64-linux-gnu -lSDL2 " which has
leading or trailing whitespace. This is now an error according to policy
CMP0004.
-- Generating done
Run Code Online (Sandbox Code Playgroud)
cmake列表有什么问题?
我不认为轻微的cmake版本差异会导致这样的错误.
# CMakeLists.txt
cmake_minimum_required(VERSION 3.5.1)
project (main)
add_executable(main
main.cpp
)
find_package(SDL2 REQUIRED)
include_directories(${SDL2_INCLUDE_DIRS})
target_link_libraries(main ${SDL2_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)
.
// main.cpp
int main()
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
更新:
的内容
/usr/lib/x86_64-linux-gnu/cmake/SDL2/sdl2-config.cmake
是
# sdl2 cmake project-config input for ./configure scripts
set(prefix …Run Code Online (Sandbox Code Playgroud) 我想使用 SDL2 制作游戏,但我无法编译和/或运行我的代码,请帮助!
众所周知,SDL2 很难设置,它通常是有抱负的游戏开发人员尝试使用的第一个库。
这篇文章旨在作为设置 SDL2 的常见问题的规范副本。
我想编译这段代码:
#include <SDL.h>
int main(int argc, char* argv[]) {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但它无法联系起来: Error 1 error LNK1561: entry point must be defined
这个库里有一些奇怪的代码:http://hg.libsdl.org/SDL/file/75726efbf679/include/SDL_main.h
#define main SDL_main
Run Code Online (Sandbox Code Playgroud)
我也加入SDL2.lib;SDL2main.lib了Project Settings => Linker => Input.
我该怎么做才能运行这个项目?
VS 2012 SP3,空C++项目.
仅使用给定的SDL_Window*和SDL_Renderer*,如何在SDL 2.0中创建和保存屏幕截图?
结构SDL_Keysym有SDL_Scancode和SDL_Keycode成员.他们之间有什么区别?文档并没有真正为我清除它.我试过两个,他们似乎做同样的事情.
曾经有一个SDL_EnableKeyRepeat()在SDL中命名的函数,但在SDL2中不再存在.
我在SDL2-wiki中搜索过但未能找到任何相关内容.
有任何想法吗?
我使用以下结构来获取调整大小的SDL窗口的新宽度和高度.但是使用这种结构,我只能在完成调整大小后才能获得新数据,即完成拖动并释放鼠标按钮.如何连续获取新数据,就在我拖动窗口的时候.
if (sdl_set->GetMainEvent()->type == SDL_WINDOWEVENT)
{
if (sdl_set->GetMainEvent()->window.event == SDL_WINDOWEVENT_RESIZED)
{
ScreenWidth = sdl_set->GetMainEvent()->window.data1;
ScreenHeight = sdl_set->GetMainEvent()->window.data2;
cout << "Window Resized!" << endl;
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个使用 SDL2 编写的游戏,以及用于绘图的 SDL2 渲染器(硬件加速)。有没有绘制填充四边形或三角形的技巧?
目前,我只是通过绘制大量线条(SDL_Drawlines)来填充它们,但性能很差。
我不想进入OpenGL。