gpt4 book ai didi

c++ - glTranslatef 等价于没有它

转载 作者:行者123 更新时间:2023-11-28 03:33:39 24 4
gpt4 key购买 nike

好的,我正在连接到游戏中以从中检索数据并使用它。我得到了 Hook 文本(通过 CallLists)。

游戏使用:

enter image description here

glNewlist()
glBegin(GL_QUADS)
glVertex2i(....); //Stored the location of each char in the bitmap above..
glTexCoords2f(....); //Not sure what this is..
glEnd()
glEndList()

glCallList(876); //Represents a single character in the above bitmap.
glLoadIdentity(); //Resets the matrix.
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PREVIOUS);
glTranslatef(336, 196, 0); //Places it on screen somehow! :S? This is what I need to know.
glColor4ub(0, 0, 0, 255); //Colours the text.
LoadIdentity(); //Resets the matrix and does the next character.
glCallList(877); //Next char.

将文本呈现到屏幕上。有没有办法找出屏幕上文本的坐标?我可以通过 Detours 访问所有功能。

我不确定 glTranslate 做了什么。如何获取文本的 X 和 Y?

我已经使用它从 glTranslate 投影坐标,但它仍然投影错误。我将什么传递给我的 WorldVector?它只是一个包含 X、Y、Z 的结构。我已经将 glTranslate 坐标传递给它,但这不起作用。

bool WorldToScreen(GLfloat &X, GLfloat &Y, Vector3D World, GLdouble* ModelViewMatrix, GLdouble* ProjectionMatrix)
{
GLint ViewPort[4];
GLdouble Screen[3];
glGetIntegerv(GL_VIEWPORT, ViewPort);

if(gluProject(World.X, World.Y, World.Z, ModelViewMatrix, ProjectionMatrix, ViewPort, &Screen[0], &Screen[1], &Screen[2]) == GL_TRUE)
{
X = Screen[0];
Y = ViewPort[3] - Screen[1];
return true;
}
return false;
}

最佳答案

这真的取决于,如果你在正交模式下绘制你的文本,无论你传递给 glTranslatef 的是实际的屏幕坐标,如果你在透视模式下,你将不得不通过转换管道传递它们以获得屏幕坐标,我相信执行此操作的函数将在名为 gluProject 的 GLU 库中,其中 gluUnProject 会将屏幕坐标带到世界空间

translate to world position 
translate to view position
divide by W (Copy of Z) to get projection coordinates
ScreenX = Px * ScreenWidth/2 + ScreenWidth/2
ScreenY = -Py * ScreenWidth/2 + ScreenWidth/2

关于c++ - glTranslatef 等价于没有它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11804790/

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