0
픽셀 당 픽셀 이미지를 만들고 SDL로 화면에 표시하려고합니다. 이미지는 초당 50 회까지 새로 고쳐지고 다시 표시되어야합니다 (50fps 게임을 찾고 있습니다). 내가하고 싶은 것을 설명하기 위해 간단한 프로그램을 만들려고했다. 1280 * 720 창과 질감을 녹색과 빨간색으로 번갈아 작성했다. 문제는 코드가 매우 느리게 실행된다는 것입니다 (~ 8 FPS). 나는 어디에서 엉망진창 이었어?SDL2의 텍스처로 픽셀 렌더링 당 느린 픽셀
여기에 모든 픽셀이 느리게 될 것입니다에 대한 함수를 사용하여 화면에 그리기 내 코드
SDL_Texture *display;
SDL_Window *window;
SDL_Renderer *renderer;
int x;
int y;
int a = 255;
int b = 0;
window = SDL_CreateWindow(gl_title, SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED, gl_width, gl_height, 0);
renderer = SDL_CreateRenderer(window, 0, SDL_RENDERER_ACCELERATED |
SDL_RENDERER_TARGETTEXTURE |
SDL_RENDERER_PRESENTVSYNC);
display = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888,
SDL_TEXTUREACCESS_TARGET, gl_width, gl_height);
while (true)
{
SDL_SetRenderTarget(renderer, display);
SDL_SetRenderDrawColor(renderer, a, b, 0, 255);
for (x = 0; x < gl_width; ++x)
{
for (y = 0; y < gl_height; ++y)
{
SDL_RenderDrawPoint(renderer, x, y);
}
}
a = a == 255 ? 0 : 255;
b = b == 255 ? 0 : 255;
SDL_SetRenderTarget(renderer, NULL);
SDL_RenderCopy(renderer, display, NULL, NULL);
SDL_RenderPresent(renderer);
}
화면의 모든 픽셀이 변경되므로 이러한 기능을 사용하는 것은 좋지 않습니다. 내가 찾은 해결책은 SDL_Surface를 사용하여 픽셀을 직접 수정 한 다음 텍스처로 변환하고 표시하는 것입니다. –
@BrendanRius 정말 느립니다. SDL_RenderFillRect()가 가장 빠른 방법입니다. – 2501
픽셀 당 픽셀 렌더링의 경우에도? –