有人可以解释一下
__imp__fprintf
和
__imp____iob_func
未解决的外部手段?
因为我在尝试编译时遇到这些错误:
1>SDL2main.lib(SDL_windows_main.obj) : error LNK2019: unresolved external symbol __imp__fprintf referenced in function _ShowError
1>SDL2main.lib(SDL_windows_main.obj) : error LNK2019: unresolved external symbol __imp____iob_func referenced in function _ShowError
1>E:\Documents\Visual Studio 2015\Projects\SDL2_Test\Debug\SDL2_Test.exe : fatal error LNK1120: 2 unresolved externals
Run Code Online (Sandbox Code Playgroud)
我已经可以说问题不在于连接错误.我已经正确地链接了所有内容,但由于某种原因它无法编译.
我正在尝试使用SDL2.
我正在使用Visual Studio 2015作为编译器.
我已链接到链接器中的SDL2.lib和SDL2main.lib - >输入 - >附加依赖项,我确保VC++目录是正确的.
我从SDL2开始,在尝试理解SDL_Renderer是什么时遇到了一些麻烦.
它是什么?它有什么作用?SDL_Renderer,SDL_Window,SDL_Surface和SDL_Texture之间有什么区别?它们是如何相关的?
在尝试理解这个介绍性代码时,我遇到了这个问题:
#include <iostream>
#include <SDL2/SDL.h>
int main()
{
/* Starting SDL */
if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {
std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl;
return 1;
}
/* Create a Window */
SDL_Window *window = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN);
if (window == nullptr) {
std::cout << "SDL_CreateWindow Error: " << SDL_GetError() << std::endl;
return 1;
}
/* Create a Render */
SDL_Renderer *render = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
if (render == nullptr) …
Run Code Online (Sandbox Code Playgroud) 任何人都可以用简单的词语向我解释纹理和表面之间的区别是什么?我看到它用在SDL2
为SDL_Surface
和SDL_Texture
.SDL_Texture
创建SDL_Surface
,然后从图像/位图创建.两者都是像素集合.但是我没看到它们之间的主要区别(必须用GPU做些什么?)
我试图谷歌它,但我发现的所有解释都太复杂,无法深入了解计算机图形的东西.
我正在使用LazyFoo的SDL2.0教程,使用Code :: Blocks 13.12.我已经毫无困难地将SDL2链接并在VS2010中运行但是已经更改了IDE并遇到了这个错误:
winapifamily.h:没有这样的文件或目录
我认为一切都是正确的.我已将程序指向我的SDL2 include和lib目录.
Buildlog :(文件中出现错误:..\include\SDL2\SDL_platform.h)
=== Build:在SDL2_Setup中调试(编译器:GNU GCC编译器)===
致命错误:winapifamily.h:没有这样的文件或目录
===构建失败:1个错误,0个警告(0分钟,0秒(秒))===
这是我第一次在这里问一个问题.我在Google上找到答案并在此处搜索现有的问题/答案,但无法解决问题.这是我的代码.
我的代码:
// Using SDL and standard IO
#include <SDL.h>
#include <stdio.h>
// Screen dimension constants
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
int main( int argc, char* args[] )
{
// The window we'll be rendering to
SDL_Window* window = NULL;
// The surface contained by the window
SDL_Surface* screenSurface = NULL;
// Initialize SDL
if( SDL_Init( SDL_INIT_VIDEO) < 0 ) …
Run Code Online (Sandbox Code Playgroud) 我想知道如何使用SDL2渲染文本.我发现了一个名为API SDL_TTF
和一些教程,但是它们不适用于我的情况.
我正在使用SDL_Window
和SDL_Renderer
,而教程是特定的SDL_Surface
.
是否有可能使用SDL_TTF
与SDL_Render/SDL_Window
?如果是这样,怎么样?
我尝试按照这两个教程(或由于版本差异而适用的部分)来安装SDL 2.0.2以使用Xcode 5.1:
运行链接了SDL 2框架的任何程序会导致Xcode崩溃并出现以下问题详细信息:
Process: Xcode [1787]
Path: /Applications/Xcode.app/Contents/MacOS/Xcode
Identifier: com.apple.dt.Xcode
Version: 5.1 (5084)
Build Info: IDEFrameworks-5084000000000000~21
App Item ID: 497799835
App External ID: 444172641
Code Type: X86-64 (Native)
Parent Process: launchd [257]
Responsible: Xcode [1787]
User ID: 501
PlugIn Path: /Library/Frameworks/SDL2.framework/Versions/A/SDL2
PlugIn Identifier: org.libsdl.SDL2
PlugIn Version: 2.0.2 (2.0.2)
Date/Time: 2014-03-13 04:24:59.771 +0200
OS Version: Mac OS X 10.9.2 (13C64)
Report Version: 11
Anonymous UUID: EFECF2A0-A489-055E-0904-D3CD9E756EB0
Crashed Thread: 21 <lldb.process.internal-state(pid=1804)>
Exception Type: EXC_BAD_ACCESS (Code Signature Invalid)
Exception …
Run Code Online (Sandbox Code Playgroud) 我有点坚持SDL2纹理背后的逻辑.对我来说,它们毫无意义,因为你无法吸引他们.
在我的计划,我有几个面(或什么是表面之前,我切换到SDL2),我只是图混合在一起,形成层.现在,似乎我需要创建几个渲染器和纹理来创建相同的效果,因为SDL_RenderCopy
它采用纹理指针.
不仅如此,所有渲染器都必须来自一个窗口,我明白这一点,但仍然会让我更加严重.
这一切看起来都非常庞大和缓慢.我错过了什么吗?有没有办法直接绘制纹理?纹理有什么意义,我可以安全地使用多个(如果不是数百个)渲染器来代替表面吗?
我在寻找编译使用C++程序最简单的方法SDL2和SDL_image与cmake的.
经过几个小时的搜索后,这是我最好的尝试:
的CMakeLists.txt
project(shooter-cmake2)
cmake_minimum_required(VERSION 2.8)
set(SOURCES
shooter.cpp
classes.cpp
utils.cpp
)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
add_executable(${PROJECT_NAME} ${SOURCES})
INCLUDE(FindPkgConfig)
PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2)
PKG_SEARCH_MODULE(SDL2_image REQUIRED sdl2_image)
INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIRS} ${SDL2IMAGE_INCLUDE_DIR})
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${SDL2_LIBRARIES} ${SDL2IMAGE_LIBRARY})
Run Code Online (Sandbox Code Playgroud)
我收到这些错误:
In function `loadTexture(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, SDL_Renderer*)':
undefined reference to `IMG_LoadTexture'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
这是函数调用:
#include "SDL.h"
#include "SDL_image.h"
SDL_Texture* loadTexture(const std::string &file, SDL_Renderer *ren){
SDL_Texture *texture = IMG_LoadTexture(ren, file.c_str());
texture != nullptr or die("LoadTexture");
return texture;
}
Run Code Online (Sandbox Code Playgroud)
我很绝望.请帮我!谢谢!:)
我尝试从Twinklebar SDL教程运行简单的test.cpp,我收到此错误:
test.cpp:2:10: fatal error: 'SDL2/SDL.h' file not found
Run Code Online (Sandbox Code Playgroud)
所以我在Ubuntu/Mint中查找sdl开发包:
aptitude search sdl | grep 2
Run Code Online (Sandbox Code Playgroud)
我能找到的就是:
libsdl1.2-dev
Run Code Online (Sandbox Code Playgroud)
这是否意味着我唯一的选择是从源代码安装?
在这里看到这篇文章关于使用SDL_ttf在游戏中渲染文本.但是,这种方法需要每个帧调用SDL_CreateTextureFromSurface()以及SDL_FreeSurface()和SDL_DestroyTexture().
创建纹理(并且可能随后必须将它们发送到GPU)每一帧都会对我的性能产生重大影响吗?
使用SDL_ttf只是用我的整个渲染字符集创建一个纹理然后自己从那里开始逐个字符?
编辑:我希望只用美国英语(基本ASCII)渲染简单的等宽字体.