gpt4 book ai didi

c++ - 视口(viewport)内的 OpenGL 视口(viewport)

转载 作者:行者123 更新时间:2023-11-28 06:29:54 26 4
gpt4 key购买 nike

我在 opengl 中创建了一个迷宫,并且正在尝试创建一个小 map 。为此,我想到在视口(viewport)内创建一个视口(viewport)。我有三种方法,一种用于创建墙壁,另一种用于创建地板,另一种用于创建小 map 。墙壁和地板进入主视口(viewport),迷你 map 进入第二视口(viewport)。我正在使用显示列表来创建墙壁和地板。我可以创建两个视口(viewport),但我的问题是我不知道在哪里调用方法来创建小 map 。

我不知道它是否有任何帮助,但这是我的显示列表方法:

void createDisplayLists(int janelaID)
{
//Creates the walls
modelo.labirinto[janelaID] = glGenLists(2);
glNewList(modelo.labirinto[janelaID], GL_COMPILE);
glPushAttrib(GL_COLOR_BUFFER_BIT | GL_CURRENT_BIT | GL_ENABLE_BIT);
desenhaLabirinto();
glPopAttrib();
glEndList();

//Creates the floor
modelo.chao[janelaID] = modelo.labirinto[janelaID] + 1;
glNewList(modelo.chao[janelaID], GL_COMPILE);
glPushAttrib(GL_COLOR_BUFFER_BIT | GL_CURRENT_BIT | GL_ENABLE_BIT);
desenhaChao(CHAO_DIMENSAO, modelo.texID[janelaID][ID_TEXTURA_CHAO]);
glPopAttrib();
glEndList();
}

最佳答案

OpenGL 不是场景图,它是基于状态的绘图 API。在您发出调用的那一刻,事情就会变成像素(有效;在实践中,事情会被分批处理并异步执行,但这对这种情况并不重要)。

所以它的要点是:

draw_stuff_into_viewport_A():
glViewport(viewport_A)
setup_projection(project_A)
draw_A_stuff()

draw_stuff_into_viewport_B():
glViewport(viewport_B)
setup_projection(project_B)
draw_B_stuff()

display():
glClear(...)

draw_stuff_into_viewport_A()
draw_stuff_into_viewport_B()

swapBuffers()

关于c++ - 视口(viewport)内的 OpenGL 视口(viewport),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27797166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com