如何解决为什么在 SDL 中渲染纹理时会出现虚假的白色像素?
我正在使用 SDL2 在屏幕上绘制一些东西。这是一些代码:
#include <SDL.h>
void main()
{
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Window *window = SDL_CreateWindow("Test",SDL_WINDOWPOS_UNDEFINED,500,0);
SDL_Renderer *renderer = SDL_CreateRenderer(window,-1,0);
SDL_Texture *texture;
{
SDL_Surface *window_surface = SDL_GetwindowSurface(window);
Uint32 pixel_format = window_surface->format->format;
SDL_Surface *surface = SDL_CreateRGBSurfaceWithFormat(0,48,8,pixel_format);
texture = SDL_CreateTextureFromSurface(renderer,surface);
SDL_FreeSurface(surface);
SDL_FreeSurface(window_surface);
}
SDL_Rect target_rectangle;
target_rectangle.x = 100;
target_rectangle.y = 100;
target_rectangle.w = 48;
target_rectangle.h = 48;
SDL_SetRenderDrawColor(renderer,255,255);
SDL_RenderDrawLine(renderer,50,0);
SDL_Rendercopy(renderer,texture,&target_rectangle);
SDL_RenderPresent(renderer);
SDL_Event event;
while(1)
{
while (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_QUIT:
return;
break;
}
}
SDL_Delay(10);
}
}
代码创建了一些虚拟的空白纹理 texture
。我对从位图文件加载的纹理得到了相同的行为。这些行是重要的:
SDL_SetRenderDrawColor(renderer,255);
SDL_RenderDrawLine(renderer,0);
SDL_Rendercopy(renderer,&target_rectangle);
SDL_RenderPresent(renderer);
所以在白色像素的某处画一条线,然后将虚拟纹理复制到屏幕上,并显示它。当我这样做时,我会在纹理的右下角看到一个白色像素。
正如我所说,当纹理来自位图时,我也使用如下代码得到了这一点:
SDL_Surface *bitmap_surface = SDL_LoadBMP("test.bmp");
SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer,bitmap_surface);
SDL_FreeSurface(bitmap_surface);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。