- UID
- 232374
- 帖子
- 16
- 主題
- 6
- 精華
- 0
- 積分
- 10
- 楓幣
- 80
- 威望
- 8
- 存款
- 0
- 贊助金額
- 0
- 推廣
- 0
- GP
- 15
- 閱讀權限
- 10
- 性別
- 保密
- 在線時間
- 32 小時
- 註冊時間
- 2018-4-20
- 最後登入
- 2024-11-19
|
可能對大部分的人有用的功能吧 近期有人找我要源碼 如果是技術交流 我很樂意分享 但是妳壹直讓我發源碼 我只是發原理和寫法 如果妳只是想直接編譯 那是不可能的
准星的几种写法
Hook glViewport
//获取准星坐标
void WINAPI HookOpengl::extglViewport(GLint x, GLint y, GLsizei width, GLsizei height)
{
glWidth = width;
glHeight = height;
glViewport(x, y, width, height);
}
//画出准星 Hook glColor3f
void WINAPI HookOpengl::extglColor3f(GLfloat red, GLfloat green, GLfloat blue)
{
if (g_Vars.WallHack.SightBead == 2 && g_Vars.WallHack.Enable)
{
glCrosshair();
}
glColor3f(red, green, blue);
}
void WINAPI glCrosshair()
{
float params[4];
glEnable(GL_BLEND);
glDisable(GL_TEXTURE_2D);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glGetFloatv(GL_CURRENT_COLOR, params);
glColor3f(1.0f, 0.0f, 0.0f);
glBegin(GL_POLYGON);
for (int i = 10; i != 0; i--)
{
glVertex2f(cos(0.6283185307179586f*i)*3.0f + (glWidth / 2), sin(0.6283185307179586f*i)*3.0f + (glHeight / 2));
}
glEnd();
glDisable(GL_BLEND);
glEnable(GL_TEXTURE_2D);
glColor3f(params[0], params[1], params[2]);
}
第二种准星写法 Hook glEnable
void WINAPI HookOpengl::extglEnable(GLenum cap)
{
if (g_Vars.WallHack.SightBead == 1 && g_Vars.WallHack.Enable && !Functions::Visuals::g_Menu.Visible)
{
GLfloat color[4];
GLint iDim[4];
glGetFloatv(GL_CURRENT_COLOR, color);
glPushMatrix();
glLoadIdentity();
glDisable(GL_TEXTURE_2D);
glGetIntegerv(GL_VIEWPORT, iDim);
glColor4f(1.0f, 1.0f, 0.0f, 0.7f);
glLineWidth(1.5f);
glBegin(GL_LINES);
glVertex2i(iDim[2] / 2, (iDim[3] / 2) - 12);
glVertex2i(iDim[2] / 2, (iDim[3] / 2) - 5);
glVertex2i(iDim[2] / 2, (iDim[3] / 2) + 5);
glVertex2i(iDim[2] / 2, (iDim[3] / 2) + 12);
glVertex2i((iDim[2] / 2) - 12, iDim[3] / 2);
glVertex2i((iDim[2] / 2) - 5, iDim[3] / 2);
glVertex2i((iDim[2] / 2) + 5, iDim[3] / 2);
glVertex2i((iDim[2] / 2) + 12, iDim[3] / 2);
glEnd();
glColor3f(color[0], color[1], color[2]);
glBegin(GL_POINTS);
glVertex2i((iDim[2] / 2) - 3, iDim[3] / 2);
glVertex2i((iDim[2] / 2) + 3, iDim[3] / 2);
glVertex2i(iDim[2] / 2, (iDim[3] / 2) - 3);
glVertex2i(iDim[2] / 2, (iDim[3] / 2) + 3);
glEnd();
glEnable(GL_TEXTURE_2D);
glPopMatrix();
}
glEnable(cap);
}
其他的
另外我在國外發現還有另外繪圖的方法 遊戲的接口 有意思的可以起研究
|
-
總評分: GP + 1
查看全部評分
|