首页
社区
课程
招聘
[未解决,已结帖] [原创]CS单机 1.5 或 1.6 Dx 方框绘制源码。 20.00雪花
发表于: 2018-1-30 17:42 4936

[未解决,已结帖] [原创]CS单机 1.5 或 1.6 Dx 方框绘制源码。 20.00雪花

2018-1-30 17:42
4936
代朋友找。单机就行。要Dx模式。
-------------------------------------------------------------
结贴:已经在油管找到老外的视频教程。
附上连接:https://www.youtube.com/user/L4DL4D2EUROPE
最后于 2018-3-15 10:07 被qqwawzymu编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 12848
活跃值: (9133)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
2
那个太底层了。要搞这些功能直接调gEngfuncs里的triapi和WorldToScreen,都是导出的
基础教程移步https://tieba.baidu.com/p/5177421432
2018-1-31 14:27
0
雪    币: 78
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
hzqst 那个太底层了。要搞这些功能直接调gEngfuncs里的triapi和WorldToScreen,都是导出的 基础教程移步https://tieba.baidu.com/p/5177421432
CS是表哥老本行哇
2018-1-31 15:06
0
雪    币: 96
活跃值: (316)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
没有视频资料什么的,但可以现教
2018-2-1 02:10
0
雪    币: 639
活跃值: (1187)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
5
hzqst 那个太底层了。要搞这些功能直接调gEngfuncs里的triapi和WorldToScreen,都是导出的 基础教程移步https://tieba.baidu.com/p/5177421432
主要是学习代码,如果都用插件实现和只用成品没区别呢。
2018-2-3 16:21
0
雪    币: 639
活跃值: (1187)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
6
wx_刹那轮回 没有视频资料什么的,但可以现教
有详细的代码就好。
2018-2-3 16:21
0
雪    币: 12848
活跃值: (9133)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
7
qqwawzymu 主要是学习代码,如果都用插件实现和只用成品没区别呢。
这个游戏的D3D是用DX7模拟OpenGL的,很多东西完全过时了,非常不适合用来做D3D方面的学习,你研究这个的渲染层就好比学c语言用vc6一样。你要学也最起码从DX9学起吧,更何况现在的游戏普遍都是DX11了。
2018-2-3 18:01
0
雪    币: 639
活跃值: (1187)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
8
hzqst 这个游戏的D3D是用DX7模拟OpenGL的,很多东西完全过时了,非常不适合用来做D3D方面的学习,你研究这个的渲染层就好比学c语言用vc6一样。你要学也最起码从DX9学起吧,更何况现在的游戏普遍都是 ...
主要想学习理解  WorldToScreen  这个过程, 我需要一个实质可运行代码作为学习参考。
希望更好的理解  WorldToScreen  的坐标转换过程。再者学习到视觉远近的算法。
感谢您的一直关注。但你给的连接代码中,没看到有 WorldToScreen 的使用过程。

2018-2-5 08:46
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我最近做过。但是没有使用WorldToScreen。因为不会用。我用的是比较麻烦的方式,先通过ce找出人物坐标,FOV,鼠标xy基址,然后还要获取游戏分辨率,通过算法将3维坐标转换成屏幕坐标。但是这种方法画出的方框有一个缺点就是比较抖,因为是通过人物鼠标的xy坐标是经常变化的,经常打一枪就变化一下。比较正确的做法应该是hookd3d的模型id获取相应数据再绘制图像。
2018-2-5 09:29
0
雪    币: 12848
活跃值: (9133)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
10
qqwawzymu hzqst 这个游戏的D3D是用DX7模拟OpenGL的,很多东西完全过时了,非常不适合用来做D3D方面的学习,你研究这个的渲染层就好比学c语言用vc6一样。 ...
float gWorldToScreen[16];
float gScreenToWorld[16];

void R_SetupGL (void)
{
//some code...

	if (gl_flipmatrix.value)
	{
		for (i = 0; i < 16; i += 4)
		{
			for (j = 0; j < 4; j++)
			{
				gWorldToScreen[i + j] = 0;

				for (k = 0; k < 4; k++)
					gWorldToScreen[i + j] += gProjectionMatrix[i + k] * r_world_matrix[k * 4 + j];
			}
		}
	}
	else
	{
		for (i = 0; i < 16; i += 4)
		{
			for (j = 0; j < 4; j++)
			{
				gWorldToScreen[i + j] = 0;

				for (k = 0; k < 4; k++)
					gWorldToScreen[i + j] += r_world_matrix[i + k] * gProjectionMatrix[k * 4 + j];
			}
		}
	}

	InvertMatrix(gWorldToScreen, gScreenToWorld);
}

int ScreenTransform( vec3_t point, vec3_t screen )
{
	float w;

	screen[0] = gWorldToScreen[0] * point[0] + gWorldToScreen[4] * point[1] + gWorldToScreen[8] * point[2] + gWorldToScreen[12];
	screen[1] = gWorldToScreen[1] * point[0] + gWorldToScreen[5] * point[1] + gWorldToScreen[9] * point[2] + gWorldToScreen[13];
	w = gWorldToScreen[3] * point[0] + gWorldToScreen[7] * point[1] + gWorldToScreen[11] * point[2] + gWorldToScreen[15];

	if ( w != 0 )
	{
		w = 1.0f / w;
		screen[0] *= w;
		screen[1] *= w;
	}

	return w <= 0;
}
以上是官方的代码,不方便给出完整工程
不过你可以参考类似的开源项目:https://github.com/FWGS/xash3d/blob/master/engine/client/gl_rmain.c 第207行  qboolean GAME_EXPORT R_WorldToScreen( constvec3_t point, vec3_t screen )
2018-2-5 10:40
0
雪    币: 639
活跃值: (1187)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
11
主要还是想需要一些实质性可编译直接看出东西的代码。毕竟  WorldToScreen  还是需要传入坐标。
谢谢
2018-2-5 18:02
0
雪    币: 639
活跃值: (1187)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
12
再求。。。
2018-2-23 17:39
0
雪    币: 639
活跃值: (1187)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
13
结贴已经在海外论坛找到了。
2018-3-7 16:57
0
雪    币: 1396
活跃值: (157356)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
qqwawzymu 结贴已经在海外论坛找到了。
分享一份呗
2018-3-13 12:17
0
游客
登录 | 注册 方可回帖
返回
//