gpt4 book ai didi

c++ - 有人可以解释这个 OpenGL 代码吗?

转载 作者:太空狗 更新时间:2023-10-29 23:07:10 27 4
gpt4 key购买 nike

我正在尝试使用 GLDebugger 反转游戏以查看它是如何工作的。窗口大小为 765 x 553。

Texture2D 184 看起来像: enter image description here

Texture2D 203 看起来像:

enter image description here

代码的结果是(忽略美元符号和感叹号): enter image description here

这一切背后的代码是:

glEnable(GL_SCISSOR_TEST)
glScissor(516, 335, 249, 168)
glEnable(GL_SCISSOR_TEST)
glScissor(550, 341, 154, 154)
glDisable(GL_TEXTURE_RECTANGLE)
glEnable(GL_TEXTURE_2D)

glBindTexture(GL_TEXTURE_2D, 184)
glActiveTextureARB(GL_TEXTURE1)
glEnable(GL_TEXTURE_RECTANGLE)
glBindTexture(GL_TEXTURE_RECTANGLE, 203)
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, 7681)
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, 8448)
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, 34168)
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, 768)

glBegin(GL_QUADS)
glColor3f(1, 1, 1)
glMultiTexCoord2fARB(GL_TEXTURE0, 0, 1)
glMultiTexCoord2fARB(GL_TEXTURE1, -194.55215, 353.57529)
glVertex2f(355.44785, -141.57529)
glMultiTexCoord2fARB(GL_TEXTURE0, 0, 0)
glMultiTexCoord2fARB(GL_TEXTURE1, -212.4122, -194.13358)
glVertex2f(337.5878, 406.13358)
glMultiTexCoord2fARB(GL_TEXTURE0, 1, 0)
glMultiTexCoord2fARB(GL_TEXTURE1, 335.29663, -211.99362)
glVertex2f(885.29663, 423.99362)
glMultiTexCoord2fARB(GL_TEXTURE0, 1, 1)
glMultiTexCoord2fARB(GL_TEXTURE1, 353.15674, 335.71524)
glVertex2f(903.15674, -123.71524)
glEnd()

我想知道上面的代码做了什么,因为我想知道这么大的 map 是如何变成这么小的东西的:S

有人可以将其分解或使用这些图像或不同的图像或任何东西来解释它吗?

最佳答案

要认识到的重要一点是,很简单,这段代码所做的就是“剪掉”你所在的区域,在其上应用圆形滤镜,然后将其绘制在屏幕上。

为了使用 glScissor 命令,需要 glEnable。为什么他们启用它并连续两次使用它超出了我的范围。据我了解,此代码只需启用和使用一次。

然后我们看到主纹理绑定(bind)到 GL_TEXTURE_2D,较小的纹理绑定(bind)到 GL_TEXTURE_RECTANGLE。设置了许多环境标志,以便用作过滤器的 GL_TEXTURE_RECTANGLE 通过组合某些事物并在其他事物上使用源和操作数来产生正确的结果。

一旦我们进入 glBegin,我们就开始实际绘制到屏幕上。 glEnd 表示绘制到屏幕的结束。

关于c++ - 有人可以解释这个 OpenGL 代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13447340/

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