J'essaie de changer la couleur d'arrière-plan de ma fenêtre en SDL avec un accès au niveau des pixels (je fais une explosion de particules), mais l'arrière-plan reste blanc.SDL ne restitue pas les pixels
D'abord, j'essayé d'utiliser memset pour régler la mémoire des pixels à 0x00 pour changer la couleur au noir (je memset parce que je suis suivais un tutoriel qui a utilisé)
memset(buffer, 0x00, SCREEN_WIDTH * SCREEN_HEIGHT * sizeof(Uint32));
Depuis didn « t travail que je levais les yeux comment changer la couleur de tirage du moteur de rendu et est venu avec:
SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 255);
Voici ma texture, renderer, et le code tampon et comment configurer le w indow (SCREEN_WIDTH et SCREEN_HEIGHT sont const ints fixées à 800 et 600 respectivement):
SDL_Window* window = SDL_CreateWindow("Fire Particle Explosion",
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_PRESENTVSYNC);
SDL_Texture* texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_STATIC, SCREEN_WIDTH, SCREEN_HEIGHT);
Uint32* buffer = new Uint32[SCREEN_WIDTH * SCREEN_HEIGHT];
SDL_UpdateTexture(texture, NULL, buffer, SCREEN_WIDTH * sizeof(Uint32));
SDL_RenderClear(renderer);
SDL_RenderCopy(renderer, texture, NULL, NULL);
SDL_RenderPresent(renderer);
Comment pourrais-je changer correctement le pixel d'arrière-plan par pixel, et pourquoi aucun des moyens que j'essayé le travail?
Même en commentant toutes les tampon et code de texture, et en commutant 'SDL_RENDERER_PRESENTVSYNC' à '0', 'SDL_SetRenderDrawColor (renderer, 0x00, 0x00, 0x00, 255); SDL_RenderClear (moteur de rendu); ' ne change pas la couleur de l'arrière-plan en noir. J'ai essayé de regarder votre exemple mais je suis nouveau en C++ et je ne comprends pas beaucoup des choses que vous utilisez (ex: #define au lieu de const statique, kbs, typedef struct, etc.). Une idée de pourquoi il ne rend pas l'écran noir avec ces deux lignes (toujours pas d'erreurs ou d'avertissements) –
Je pense que vous essayez d'aller trop vite. Vous devriez commencer par apprendre la programmation C avant de sauter dans la programmation SDL. Une fois que vous vous sentez prêt, faites les tutoriels sur http://lazyfoo.net/tutorials/SDL/. –
Je veux apprendre le C++ pas C, je sens que si j'apprends le C d'abord je vais obtenir les deux confus plus tard. Je connais une petite quantité de C++ (voir https://www.udemy.com/free-learn-c-tutorial-beginners/, je suis au tutoriel d'effets de particules). Enfin, je n'ai pas l'intention d'utiliser SDL, il est simplement utilisé comme support pour apprendre à créer un projet en utilisant ce qui a été appris dans le reste du tutoriel. –