SDL2를 사용하여 텍스처를 렌더링하는 데 문제가 있습니다. 내 프로그램에는 화면 주위를 움직이는 많은 픽셀이 있지만 눈에 띄게 깜박입니다. 여기 내 코드입니다 :SDL2 렌더링 (깜박임)
Source.cpp 여기
frameStart = SDL_GetTicks();
screen.update();
// Makes the screen black
for (int x = 0; x < Screen::SCREEN_WIDTH; x++)
{
for (int y = 0; y < Screen::SCREEN_HEIGHT; y++) {
screen.setPixel(x, y, 0, 0, 0);
}
}
// Draw + Update people (Code should be separated and moved)
for (Person &p : people) {
if (p.isAlive == true) {
p.Update(p);
cout << p.x << ", " << p.y << endl;
screen.setPixel(p.x, p.y, 255, 0, 0);
}
else {
screen.setPixel(p.x, p.y, 0, 0, 0);
}
}
// Manage events
if (screen.processEvents() == false) {
break;
}
frameTime = SDL_GetTicks() - frameStart;
if (frameDelay > frameTime) {
SDL_Delay(frameDelay - frameTime);
}
}
Screen.update 포인트 :
void Screen::update() {
SDL_UpdateTexture(m_texture, NULL, m_buffer, SCREEN_WIDTH * sizeof(Uint32));
SDL_RenderCopy(m_renderer, m_texture, NULL, NULL);
SDL_RenderPresent(m_renderer);
SDL_RenderClear(m_renderer);
}
다음과 같이 내 렌더링과 질감 설정은 다음과 같습니다
m_renderer = SDL_CreateRenderer(m_window, -1, SDL_RENDERER_PRESENTVSYNC);
m_texture = SDL_CreateTexture(m_renderer, SDL_PIXELFORMAT_RGBA8888,
SDL_TEXTUREACCESS_STATIC, SCREEN_WIDTH, SCREEN_HEIGHT);
I을 렌더러와 텍스처 모두를위한 플래그를 많이 사용했지만 깜박임을 멈추는 해결책을 찾지 못했습니다. 어떤 도움이라도 대단히 감사 할 것입니다. 수행해야 할
'screen.setPixel' 코드는 무엇입니까? 왜 텍스쳐를'static'으로 설정했는지 모든 프레임에서 그것을 업데이트합니까? 어떤 종류의 깜박임? 결과로 생기는 프레임 속도는 무엇입니까? – keltar