Từ mã tôi có chương trình vẽ và di chuyển hình vuông xung quanh cửa sổ ứng dụng, tôi gặp sự cố khi thay đổi kích thước cửa sổ ứng dụng. Khi tôi xử lý một thay đổi kích thước và thay đổi các tiểu bang cho phù hợp, tất cả mọi thứ trên màn hình cần được rút ra và trước khi thay đổi kích thước biến mất. Tôi không biết tại sao vì không có tọa độ bên trong đối tượng nào được thay đổi trong khi thay đổi kích thước cửa sổ.Xử lý thay đổi kích thước cửa sổ bằng OpenGL và SDL
Câu hỏi của tôi là bất cứ ai có thể chỉ cho tôi đi đúng hướng để giải quyết vấn đề của tôi (mã biên dịch tốt)
void ResizeWindow()
{
screen_width = event.resize.w;
screen_height = event.resize.h;
SDL_SetVideoMode(screen_width, screen_height, bpp, SDL_OPENGL | SDL_RESIZABLE | SDL_DOUBLEBUF);
glViewport(0, 0, screen_width, screen_height);
glMatrixMode(GL_PROJECTION);
glOrtho(0, screen_width, 0, screen_height, -1, 1);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
}
vòng lặp chính:.
while (running == true)
{
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_VIDEORESIZE: ResizeWindow(); break; // resizing called here
case SDL_QUIT: running = false; break;
case SDL_KEYDOWN: square.Handle_Input(down); break;
case SDL_KEYUP: square.Handle_Input(up); break;
}
}
square.Move();
square.Check_Collision();
glClear(GL_COLOR_BUFFER_BIT);
square.Draw();
SDL_GL_SwapBuffers();
}
Tất cả đều chạy một cách hoàn hảo cho đến khi cửa sổ được thay đổi kích cỡ.
Tôi đã xem câu hỏi trước đó của bạn, nhưng không thể xoay quanh để chỉ ra tất cả các vấn đề tại thời điểm đó. Tôi tin rằng bạn không giải quyết được các vấn đề trước đó của bạn. Bạn có lẽ nên đăng các thay đổi bạn đã thực hiện để làm cho nó hoạt động như câu trả lời của riêng bạn và đóng câu hỏi. – batbrat
Đề xuất của tôi có khắc phục được sự cố không? – batbrat
Tôi đã ngủ kể từ khi tôi đăng câu hỏi này, câu trả lời của bạn có ý nghĩa, đặc biệt là bit về SDL_SetVideoMode, nhìn lại nó, nó có vẻ như một sai lầm ngớ ngẩn về phía tôi. Câu hỏi trước tôi đăng tải thực sự có một vấn đề, đó là một sai lầm lớn của tôi; Tôi đã làm việc từ bộ nhớ và không tìm kiếm các thông số glOrtho. Tôi đã có nó như đi từ trái sang phải như 0-0. Tôi sẽ cố gắng đề xuất của bạn ngay bây giờ –