मैं ट्यूटोरियल का पालन करता हूं लेकिन ब्लैक स्क्रीन प्रदान करता हूं। एक बीजी रंग सेट नहीं कर सकता।

enter image description here

#include <SDL2/SDL.h>
#include <iostream>

using namespace std;

int main() {
    SDL_Window * window = nullptr;

    SDL_Surface * window_surface = nullptr;
    SDL_Surface * image_surface = nullptr;

    SDL_Init(SDL_INIT_VIDEO);

    window = SDL_CreateWindow("test_environment", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN);
    SDL_Renderer* renderer;

    image_surface = SDL_LoadBMP("image.bmp");
    window_surface = SDL_GetWindowSurface(window);

    bool is_running = true;
    SDL_Event event;
    renderer = SDL_CreateRenderer(window, -1, 0);
    while (is_running) {

        while (SDL_PollEvent(&event)) {

            if (event.type == SDL_QUIT) {
                is_running = false;
            }
        }
       
        SDL_RenderClear(renderer);
        SDL_SetRenderDrawColor(renderer, 255, 12, 22, 255);
        SDL_Rect rect{0,0,600,400};
        SDL_RenderFillRect(renderer, &rect);
        SDL_RenderPresent(renderer);
        SDL_Delay(16);
    }

    SDL_DestroyWindow(window);
    SDL_FreeSurface(image_surface);
    SDL_Quit();
}
0
yogom30110 19 पद 2020, 23:20
डीबग पर यह त्रुटि प्राप्त करना। मोड: झुंड मानचित्र फ़ाइल को लॉक करने में विफल रहा: errno = 35 शायद यह मायने रखता है
 – 
yogom30110
20 पद 2020, 01:11
उस दो पंक्तियों को हटा दिया और काम किया: image_surface = SDL_LoadBMP("image.bmp"); window_surface = SDL_GetWindowSurface (विंडो);
 – 
yogom30110
20 पद 2020, 01:13
क्या आपने SDL_GetError() जांचने की कोशिश की है? मुझे आश्चर्य है कि यह एक ओएस चीज हो सकती है, कुछ विशेषताओं को सही तरीके से सेट नहीं किया जा रहा है। विंडोज़ पर अपना कोड चलाने के कारण, यह अपेक्षा के अनुरूप काम करता है।
 – 
vallentin
20 पद 2020, 01:15
इसने कहा: छवि नहीं खोल सका। bmpRenderer पहले से ही विंडो से जुड़ा हुआ है
 – 
yogom30110
20 पद 2020, 01:20
1
यदि आप एक रेंडरर का उपयोग करने जा रहे हैं तो आप SDL_GetWindowSurface() के बारे में क्यों चिंतित हैं? प्रति दस्तावेज़: "आप इसे 3D या रेंडरिंग API इस खिड़की पर।"
 – 
genpfault
20 पद 2020, 10:26

1 उत्तर

सबसे बढ़िया उत्तर

ऐसा इसलिए है क्योंकि आप अपना ड्रा रंग सेट करने से पहले अपने रेंडरर को साफ़ कर देते हैं। लूप में हर बार SDL_SetRenderDrawColor(renderer, 255,255,255,255) जोड़ें; SDL_RenderClear(renderer);

1
Ggsgn Hdjwngnf 1 जिंदा 2021, 18:51