3D游戏编程大师技巧(上下册)的笔记(16)

>我来写笔记

按有用程度 按页码先后 最新笔记

  • 麻子

    麻子

    基于cocos2d-x实现的跨平台soft renderer 代码在此下载 http://download.csdn.net/detail/liumazi/9141743

    2015-09-26 20:55

  • 麻子

    麻子

    作者新增了一个LightV2结构,以支持将光源位置(通过乘以相机矩阵)和方向(通过乘以去除了平移的相机矩阵)从世界坐标转为相机坐标,可是,作者似乎忘记了一件事? World_To_Camera_RENDERLIST4DV2() 此函数将渲染列表中的三角形的顶点(通过乘以相机矩阵)从世界坐标转为相机坐标,但是,顶点的法向量呢?不需要跟着旋转吗?

    2015-08-30 22:58

  • 麻子

    麻子

    函数Clip_Polys_RENDERLIST4DV2有问题 在处理CLIP_POLY_Y_PLANE的时候,应该 z_factor = 0.5f * cam.viewplane_height / cam.view_dist; 而不是 z_factor = 0.5f * cam.viewplane_width / cam.view_dist; --------- 补充, 裁剪后未处理顶点法线,Gouraud着色方式下有问题, 修正代码节选: (num_verts_in == 2 时) // 法线插值, fixed by mazi if (curr_poly->attr & POLY4DV2_ATTR_SHADE_MODE_GOURAUD) {...   (2回应)

    2015-08-30 14:11

  • 麻子

    麻子

    新版的COB加载函数有个小问题 没有考虑到关闭光照时的情形 首先 不管在什么情况下 绘制三角形线框的函数都会使用 poly.lit_color[0] 而填充三角形的函数则会在固定着色(无光照) 、Flat着色时使用 poly.lit_color[0] 在Gouraud着色时使用poly.lit_color[0]、poly.lit_color[1]、poly.lit_color[2] 无光照情况下(未经调用光照函数),每个poly的lit_color[]是不会被修改的,而COB加载函数也没有设置poly.lit_color[],所以..

    2015-08-27 12:44

  • 麻子

    麻子

    流程总结: -- mGouraudWater.loadFormCOB("model/water_gouraud_01.cob", vscale, Point4D::ZERO, Vector4D::ZERO, VERTEX_FLAGS_SWAP_YZ | VERTEX_FLAGS_TRANSFORM_LOCAL | VERTEX_FLAGS_TRANSFORM_LOCAL_WORLD); 加载模型 同时按vscale对模型缩放 然后。。 调用computePolyNormals() 计算并保存每个面的法向量的长度 调用computeVertexNormals() 计算并保存每个顶点的法向量(归一化为单位向量) 备注:因为缩..   (1回应)

    2015-08-27 11:56

  • 麻子

    麻子

    此函数 CPARSERV1::Pattern_Match() 有问题, char buffer[PARSER_BUFFER_SIZE]; 这个数组只有256字节 然后 strcpy(buffer, string); 如果string 很长的话 会把堆栈都写坏了... 不知道为何作者的程序没崩 是编译器不同 ?

    2015-08-27 02:37

  • 麻子

    麻子

    此函数 Draw_Gouraud_Triangle16 有很大的问题, 会导致除0错误。 原因在于, 前面判断三角形是否为退化三角形、三角形是否完全在屏幕外、三角形的类型(平顶、平底、普通), 用的都是浮点数坐标比较的,甚至于都没有用作者自己写的FCMP宏,而是直接用的==来判断浮点数坐标是否相等。 然后,又将浮点数坐标+0.5后截断为整数了。类似于这样: x0 = (int)(face->tvlist[v0].x+0.5); y0 = (int)(face->tvlist[v0].y+0.5...   (1回应)

    2015-08-27 02:26

  • 麻子

    麻子

    函数 Light_RENDERLIST4DV2_World16 中,对spot2光照的计算有些问题。 因为表示聚光方向的向量dir实际上是反的, dir表示的是从dir至原点的方向。 所以在求聚光灯方向与聚光灯到物体的方向的夹角的时候,也应该用反的向量。 即:从物体顶点到聚光灯位置,反反的夹角=正正的夹角 VECTOR4D_Build( &lights[curr_light].pos, &curr_poly->tvlist[0].v, &s); 请将此语句改为 VECTOR4D_Build( &curr_poly->t...   (1回应)

    2015-08-27 02:09

  • 麻子

    麻子

    Camera_To_Perspective_Screen_OBJECT4DV1 这个函数有些问题 首先,这里应该需要重新计算cam.view_dist 因为原先的cam.view_dist是针对2*2的视平面的 另外,书上的代码多了 *cam->aspect_ratio,实际上是不需要的,随书代码中也没有

    2015-08-21 20:35

  • 麻子

    麻子

    从几何学上说,最多有3*num_vertices个纹理坐标 应该是3*num_polys

    2015-08-19 23:09

<前页 1 2 后页>

笔记是你写在书页留白边上的内容;是你阅读中的批注、摘抄及随感。

笔记必须是自己所写,不欢迎转载。摘抄原文的部分应该进行特殊标明。

3D游戏编程大师技巧(上下册)

>3D游戏编程大师技巧(上下册)