내 프로그램에서 만델 브로 세트를 그려야합니다. 운영 체제에서 다른 창 (예 : Chrome 또는 텍스트 편집기 ...)을 클릭하면 프로그램이 화면을 검은 색으로 지우지 만 완료 한 곳을 계속 그리는 것을 발견했습니다. 그것은 드로잉 중입니다. 드로잉이 끝나고 다른 창을 클릭하면 지우기가 수행되지 않습니다.Linux에서 다른 소프트웨어의 창을 클릭하면 SDL이 창 화면을 지 웁니다.
모든 픽셀을 화면에 추적하지 않고 전체 픽셀 행렬을 항상 인쇄하지 않고이 문제를 해결할 수있는 해결책이 있습니까 (예 : SDL에서 스위치를 켜거나 끄기)?
최소 코드 :
#include <stdlib.h>
#include <stdbool.h>
#include <SDL2/SDL.h>
enum {WIDTH = 1700, HEIGHT = 950};
int main(){
SDL_Init(SDL_INIT_VIDEO);
SDL_Window *window = SDL_CreateWindow("Minimal", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WIDTH, HEIGHT, SDL_WINDOW_SHOWN);
SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
SDL_RenderClear(renderer);
SDL_RenderPresent(renderer);
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
SDL_Event event;
bool exit_ = false;
while (! exit_){
for (int i = 1; i < WIDTH; i++){
for (int j = 1; j < HEIGHT; j++){
SDL_RenderDrawPoint(renderer, i, j);
}
SDL_RenderPresent(renderer);
}
while (SDL_PollEvent(&event)){
if (event.type == SDL_QUIT) exit_ = true;
}
}
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
(참고 : 나는이 프로그램에서 처리하는 모든 윈도우 이벤트 없어요.)
[mcve]? 스크린 샷? 리눅스 버전, SDL 버전? –
이전 데이터를 유지하기 위해 프레임 버퍼가 필요하다고 생각하지 않습니다. 중요한 경우 텍스처로 렌더링 한 다음이 텍스처를 화면에 표시하십시오. – keltar
SDL의 삭제 동작을 끌 수 있습니까? – csekri