对';SDL#U UpperBlit和#x27; 我对C++比较陌生,所以尽管我在其他C语言中有过这样的经验,但这可能只是个简单的错误。这是我的密码: #include <iostream> #include <SDL2/SDL.h> SDL_Window *window; SDL_Surface *windowSurface; SDL_Surface *image[3]; SDL_Surface *currentImage; int close(); SDL_Rect gRect(int, int, int, int); //for method described below int main(int argc, char *argv[]){ SDL_Init(SDL_INIT_VIDEO); window = SDL_CreateWindow("Test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 500, 500, SDL_WINDOW_SHOWN); windowSurface = SDL_GetWindowSurface(window); image[0] = SDL_LoadBMP("filepath/img.bmp"); image[1] = SDL_LoadBMP("filepath/img2.bmp"); image[2] = SDL_LoadBMP("filepath/img3.bmp"); currentImage = image[0]; bool done = false; while(!done){ SDL_Rect rec; rec.x = 100; rec.y = 100; rec.h = 100; rec.w = 100; SDL_BlitSurface(currentImage, NULL, windowSurface, rec); SDL_UpdateWindowSurface(window); } return close(); } int close(){ for(int i = 0; i < 3; i++){ SDL_FreeSurface(image[i]); image[i] = nullptr; } currentImage = nullptr; window = nullptr; SDL_DestroyWindow(window); SDL_Quit(); return 0; }
并将SDL_BlitSurface调用更改为对';SDL#U UpperBlit和#x27; 我对C++比较陌生,所以尽管我在其他C语言中有过这样的经验,但这可能只是个简单的错误。这是我的密码: #include <iostream> #include <SDL2/SDL.h> SDL_Window *window; SDL_Surface *windowSurface; SDL_Surface *image[3]; SDL_Surface *currentImage; int close(); SDL_Rect gRect(int, int, int, int); //for method described below int main(int argc, char *argv[]){ SDL_Init(SDL_INIT_VIDEO); window = SDL_CreateWindow("Test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 500, 500, SDL_WINDOW_SHOWN); windowSurface = SDL_GetWindowSurface(window); image[0] = SDL_LoadBMP("filepath/img.bmp"); image[1] = SDL_LoadBMP("filepath/img2.bmp"); image[2] = SDL_LoadBMP("filepath/img3.bmp"); currentImage = image[0]; bool done = false; while(!done){ SDL_Rect rec; rec.x = 100; rec.y = 100; rec.h = 100; rec.w = 100; SDL_BlitSurface(currentImage, NULL, windowSurface, rec); SDL_UpdateWindowSurface(window); } return close(); } int close(){ for(int i = 0; i < 3; i++){ SDL_FreeSurface(image[i]); image[i] = nullptr; } currentImage = nullptr; window = nullptr; SDL_DestroyWindow(window); SDL_Quit(); return 0; },c++,c,loops,pointers,sdl,C++,C,Loops,Pointers,Sdl,并将SDL_BlitSurface调用更改为 SDL_BlitSurface(currentImage, NULL, windowSurface, gRect(100, 100, 100, 100)); 这并不能解决问题,出现相同的错误。如果我能在这方面得到任何帮助,我将不胜感激!谢谢 (可选)PS:我还希望您能帮助我将“image[0]”、“image[1]”和“image[2]”声明放入for循环中。我试过了,但在类型和连接方面遇到了一些问题,所以如果有人知道我如何做到这一点,请告诉我。函
SDL_BlitSurface(currentImage, NULL, windowSurface, gRect(100, 100, 100, 100));
这并不能解决问题,出现相同的错误。如果我能在这方面得到任何帮助,我将不胜感激!谢谢
(可选)PS:我还希望您能帮助我将“image[0]”、“image[1]”和“image[2]”声明放入for循环中。我试过了,但在类型和连接方面遇到了一些问题,所以如果有人知道我如何做到这一点,请告诉我。函数声明非常有用
int SDL_BlitSurface(SDL_Surface* src,
const SDL_Rect* srcrect,
SDL_Surface* dst,
SDL_Rect* dstrect)
你的代码片段
SDL_Rect rec;
rec.x = 100;
rec.y = 100;
rec.h = 100;
rec.w = 100;
SDL_BlitSurface(currentImage, NULL, windowSurface, rec);
将rec
作为最后一个参数传递,其类型为SDL_Rect
,但应为SDL_Rect*
。例如,SDL_BlitSurface(currentImage、NULL、windowSurface和rec)代码>
我也建议不要使用<代码>关闭<代码>作为函数名,因为它是问题(对于C++来说,它没有名字,但是仍然),谢谢。这很有帮助!
SDL_Rect rec;
rec.x = 100;
rec.y = 100;
rec.h = 100;
rec.w = 100;
SDL_BlitSurface(currentImage, NULL, windowSurface, rec);