OpenGL Hook,如何修改3d模型颜色?



钩子游戏是cs 1.6

钩子的glbegin函数

我想为角色模型渲染分配颜色,但代码无效

请求帮助

void APIENTRY hkGLBegin(GLenum mode)
{
if (mode==5)
{

glEnable(GL_TEXTURE_2D);
glColor4f(0, 0, 0, 0); //TODO FIXME failed
glDisable(GL_TEXTURE_2D);
}
}

我不熟悉这种GL黑客,所以我可能是错的…然而

代码无效是什么意思?编译时或运行时是否有任何错误信息?也许你只需要加上:

#include <gl.h>

#include <glgl.h>

或任何其他与编译器相关的缩写…

我认为glEnable(GL_TEXTURE_2D); glDisable(GL_TEXTURE_2D);不允许在glBegin/glEnd内…

如果钩子在glBegin之前,那么启用和禁用纹理也会禁用纹理,如果钩子不调用原始的glBegin,你可能也想添加它…

所以我将只留下glColor并删除纹理语句,它们与颜色无关…

如果它不工作,它可能表明CS正在覆盖它与自己的glColor调用或照明没有启用glEnable(GL_COLOR_MATERIAL);,所以尝试添加它…

为什么用mode == 5代替mode == GL_TRIANGLE_STRIP?这是摘自gl.h

#define GL_POINTS                           0x0000
#define GL_LINES                            0x0001
#define GL_LINE_LOOP                        0x0002
#define GL_LINE_STRIP                       0x0003
#define GL_TRIANGLES                        0x0004
#define GL_TRIANGLE_STRIP                   0x0005
#define GL_TRIANGLE_FAN                     0x0006
#define GL_QUADS                            0x0007
#define GL_QUAD_STRIP                       0x0008
#define GL_POLYGON                          0x0009

你确定CS只使用那个原语吗?如果没有,你也应该处理其他的……

所以我要改成:

#include <gl.h> // optional if compile errors present
void APIENTRY hkGLBegin(GLenum mode)
{
if (mode==GL_TRIANGLE_STRIP)
{
glEnable(GL_COLOR_MATERIAL); // optional if color is not changed by glColor on textured surfaces
glColor4f(0, 0, 0, 0);      
}
glBegin(mode); // optional if nothing is rendered
}

相关内容

  • 没有找到相关文章

最新更新