2016-06-10 6 views
0

Я хочу выровнять свои игровые компоненты, как HTML-игру.C++ SDL - Render внутри конкретной области окна

У меня SDL_Window будет отображаться все его компоненты. Этими компонентами являются некоторые кнопки, изображения и прямоугольная область как html-холст.

Я хочу, чтобы моя игра быть оказаны внутри этого холста, потому что я буду реализовывать «мир» и «камера», которая будет воздействовать только на этот «холст», в то время как GUI вокруг «холста» будет оказана независимо от камеры.

Как визуализировать рендеринг определенной области внутри окна?

Я не могу это сделать с математикой, потому что я хочу, чтобы каждая текстура, созданная внутри холста, но слишком далека от точки зрения, была скрыта.

Часть кода:

SDL_Window* gWindow = SDL_CreateWindow("Title", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 800, 600, SDL_WINDOW_SHOWN); 
    SDL_Renderer* gRenderer = SDL_CreateRenderer(gWindow, -1, SDL_RENDERER_ACCELERATED); 

    while (true) { 
     SDL_RenderClear(gRenderer); 
     render_gui(); // i can do this part 
     render_game_inside_canvas(); // ? 
     SDL_RenderPresent(gRenderer); 
    } 
+0

[Что вы пробовали?] (Http://mattgemmell.com/what-have-you-tried/) Просьба показать хотя бы минимальный усилия по решению этой проблемы. – Drop

ответ

0

Вы можете сделать это с glViewport() называют так:

Point2d pos = get_pos(); 
Vector2d sz = get_size(); 
glViewport(pos.x, screen_height-pos.y-sz.dy, sz.dx, sz.dy); 
obj.render(); 
glViewport(0,0,screen_width, screen_height); 

Это своего рода требует, чтобы вы знали, что размеры всего экрана. .. (нечетный расчет необходим, потому что glViewport поддерживает экран upsidedown :-)

 Смежные вопросы

  • Нет связанных вопросов^_^