gpt4 book ai didi

c++ - SDL 2.0/C++ - 如何创建 "SDL_Texture"数组?

转载 作者:行者123 更新时间:2023-11-28 00:39:50 26 4
gpt4 key购买 nike

SDL_Texture *t0; SDL_Texture *t1;   
SDL_Texture *t[] = {t0,t1};

它编译得很好,但如果我尝试渲染它(当然,考虑到 t0 和 t1 已经定义):

SDL_RenderCopy(ren,t[0],NULL,&someRect);
SDL_RenderCopy(ren,t[1],NULL,&someRect);

我什么都没有(我的意思是什么都没有:纯粹、无限、深不可测、无用的黑暗)。还有这个:

SDL_RenderCopy(ren,t0,NULL,&someRect);
SDL_RenderCopy(ren,t1,NULL,&someRect);

工作正常。

问题是,假设我的游戏有 9999 个纹理,我只想遍历纹理数组,而不是进行 9999 次无聊的手动工作。我真的很感谢任何帮助,因为我不知道 SDL_Texture 是如何实现的,也完全不知道为什么它在数组中不起作用。

最佳答案

我只是尝试了一个简单的示例,并且在为 SDL_Texture 指针使用数组时没有遇到任何问题,因此我假设此处未显示的代码部分有问题。

您是如何以及在何处定义 t0 和 t1 变量的?如果您在初始化数组之前没有分配它们,如上所示,数组中的指针将指向任意值(指向未初始化的指针 t0 和 t1 指向的任何一个)并且之后更改后者不会更改存储在数组中的拷贝.(这意味着您在使用数组时未在对 SDL_RenderCopy 的调用中使用有效的 SDL_Texture*)。

我的测试代码的相关部分是这样的:

SDL_Texture *tex0=LoadImage("test.bmp",renderer), *tex1=LoadImage("test1.bmp",renderer);
SDL_Texture *arr[]={tex0,tex1};
SDL_Rect dest0, dest1;
dest0.x=0;
dest0.y=0;
dest1.x=200;
dest1.y=200;

SDL_QueryTexture(tex0, NULL, NULL, &dest0.w, &dest0.h);
SDL_QueryTexture(tex1, NULL, NULL, &dest1.w, &dest1.h);

SDL_RenderClear(renderer);

SDL_RenderCopy(renderer,tex0,NULL,&dest0);
SDL_RenderCopy(renderer,tex1,NULL,&dest1);
//SDL_RenderCopy(renderer,arr[0],NULL,&dest0);
//SDL_RenderCopy(renderer,arr[1],NULL,&dest1);

SDL_RenderPresent(renderer);
SDL_Delay(2000);

对 SDL_RenderCopy 的注释调用和未注释调用都产生了相同的结果。当然,这段代码绝不是理想的,而只是为了测试手头的问题。

很抱歉没能给出明确的答案,希望能帮到你一点点忙。

关于c++ - SDL 2.0/C++ - 如何创建 "SDL_Texture"数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19416521/

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