Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SDL纹理和CPU\内存问题 我开发了一个SDL2.00和C++的游戏。我似乎有内存和CPU问题。CPU使用率上升到40%,内存使用率每秒上升5毫克_C++_Opengl_Sdl - Fatal编程技术网

SDL纹理和CPU\内存问题 我开发了一个SDL2.00和C++的游戏。我似乎有内存和CPU问题。CPU使用率上升到40%,内存使用率每秒上升5毫克

SDL纹理和CPU\内存问题 我开发了一个SDL2.00和C++的游戏。我似乎有内存和CPU问题。CPU使用率上升到40%,内存使用率每秒上升5毫克,c++,opengl,sdl,C++,Opengl,Sdl,所以我认为原因是我处理纹理\精灵的方式 我的问题是我应该为每个实例创建不同的/新的精灵/纹理吗 例如,我有一个名为“敌人”的类,它包含与敌人怪物相关的所有变量和方法,如HP、伤害、位置、图像(纹理)等。该类包含要渲染到渲染器上的自己的纹理 这条路对吗?或者我应该为之前的所有图像创建一个精灵/纹理,并根据需要进行渲染 我想知道这是否会在渲染器上渲染两个不同的图像: RenderCopy(renderer, image); image->SetPosition(X,Y); RenderCopy

所以我认为原因是我处理纹理\精灵的方式

我的问题是我应该为每个实例创建不同的/新的精灵/纹理吗

例如,我有一个名为“敌人”的类,它包含与敌人怪物相关的所有变量和方法,如HP、伤害、位置、图像(纹理)等。该类包含要渲染到渲染器上的自己的纹理

这条路对吗?或者我应该为之前的所有图像创建一个精灵/纹理,并根据需要进行渲染

我想知道这是否会在渲染器上渲染两个不同的图像:

RenderCopy(renderer, image);
image->SetPosition(X,Y);
RenderCopy(renderer,image);
还是将精灵移动到新位置

我认为我的问题是由于渲染器过载和/或加载了太多纹理造成的


让我知道你的想法

OpenGL不是场景图。这是一个绘图API。因此,每次分配新纹理时,都会创建一个消耗内存的新数据对象。您应该尽可能重用和共享资源

我的问题是,我是否应该为其创建不同的/新的精灵/纹理 每一个例子

不,除非精灵的每个实例都使用不同的纹理,否则应该重用它们,即只加载一次并存储指向精灵使用的纹理的指针

我想知道这是否会在屏幕上呈现两个不同的图像 渲染器:

RenderCopy(renderer, image); 
image->SetPosition(X,Y);
RenderCopy(renderer,image);
还是将精灵移动到新位置


这将复制图像两次。先在旧位置,然后在新位置。您将得到一个尾随图像。您可能应该清除前一个位置,或者在该位置渲染背景(或者应该存在的任何内容)

谢谢你,伙计。这就解释了为什么我的记忆力一直不好。我用一个不同的雪碧为每一个不同的例子哈哈。像射弹一样,新的敌人怪物。所以事情变得越来越复杂。我现在就修。而且似乎随着内存使用的增加,CPU也在增加。但这也可能与SDL处理事件的方式有关。我也看到其他人抱怨SDL事件处理导致的cpu使用。