私のプログラムはマンデルブロを描くことについてです。私は、オペレーティングシステム(例えば、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]?スクリーンショット? Linux版、SDL版? –
以前のデータを保持するためにフレームバッファが必要とは思わない。それが重要な場合は、テクスチャにレンダリングし、このテクスチャを画面に表示します。 – keltar
SDLのこの消去動作をオフにすることはできますか? – csekri