AI 协作日志
学生 Web 实验作品平台
学号:202412211402017 · 来源:ai-log.md
# 实验一 AI协作记录 > 请记录本人真实的AI协作过程。不要只粘贴AI生成结果,应体现自己的判断、测试和核验。 ## AI协作1:理解数据流 ### 我的目标 ### 提示词 ### AI关键回答摘要 ### 我的判断 ### 验证方法 ### 验证结果 ### 修正后的结论 --- ## AI协作2:程序调试 ### 现象 ### 我的初步判断 ### 给AI的提示词 ### AI给出的关键建议 ### 我实际进行的测试 ### 测试结果 ### 最终原因 ### 是否采纳AI建议及理由 --- ## AI协作3:顶点属性与颜色 ### 我的目标 ### 提示词 ### AI关键回答摘要 ### 对照实验 ### 实际现象 ### 我的解释 ### 最终结论 ## AI 协作 1:理解数据流 任务四 ### 我的目标 弄懂 WebGL 中**两个独立 Buffer**怎么分别绑定到`vPosition`位置属性和`vColor`颜色属性,实现顶点位置、顶点颜色分开存储。 ### 提示词 两个 Buffer 如何分别对应到 vPosition 和 vColor? ### AI 关键回答摘要 `bindBuffer`切换当前 ARRAY_BUFFER,调用`vertexAttribPointer`时,会把当前绑定的 buffer 和着色器 in 属性绑定;先绑定位置 buffer 设置 vPosition,再绑定颜色 buffer 设置 vColor。 ### 我的判断 核心是`vertexAttribPointer`依赖当前绑定的 buffer,不是 buffer 自带属性标记。这个逻辑可以用来写任务 4 的颜色 Buffer 代码。 ### 验证方法 在任务 4 代码里,先写位置 Buffer 代码,再新建颜色 Buffer,切换 bindBuffer,配置 vColor。 ### 验证结果 代码运行,三角形出现渐变,证明两个 Buffer 绑定成功。 ### 修正后的结论 每次调用`vertexAttribPointer`读取的是**此刻绑定到 ARRAY_BUFFER 的缓冲区**,所以通过多次 bindBuffer 切换,就能把不同 Buffer 绑定到不同顶点属性。 --- ## AI 协作 2:程序调试 ### 现象 一开始写完颜色 Buffer 代码,三角形没有颜色,画面单色。 ### 我的初步判断 大概率忘记启用顶点属性`enableVertexAttribArray(vColor)`。 ### 给 AI 的提示词 WebGL 两个 buffer,位置正常,颜色不生效,可能是什么原因? ### AI 给出的关键建议 1. 获取 vColor 地址;2. vertexAttribPointer 设置每个顶点 4 个 float;3. 必须 enableVertexAttribArray 开启属性。 ### 我实际进行的测试 补全`gl.enableVertexAttribArray(vColor)`,重新运行。 ### 测试结果 三角形出现红、绿、蓝顶点渐变,成功。 ### 最终原因 只写了`vertexAttribPointer`,没有启用 vColor 顶点属性,着色器无法读取颜色数据。 ### 是否采纳 AI 建议及理由 采纳,三条检查点定位到缺失的启用代码,解决渲染无颜色问题。 --- ## AI 协作 3:顶点属性与颜色 ### 我的目标 理解为什么三个顶点设置 RGB 三色后,三角形内部会平滑渐变,而不是只有三块纯色。 ### 提示词 三角形顶点设置三个不同颜色,为什么内部会产生渐变?插值发生在哪个阶段?片元着色器拿到的是顶点原始颜色吗? ### AI 关键回答摘要 光栅化阶段会对图元内部所有片元做重心坐标插值;顶点颜色经过插值后才传入片元着色器,所以产生平滑渐变。 ### 对照实验 任务 4 代码,三个顶点分别红、绿、蓝。 ### 实际现象 三角形三个顶点分别是红、绿、蓝,三角形内部颜色平滑过渡。 ### 我的解释 GPU 光栅化阶段,对三角形内部每一个像素(片元),根据距离三个顶点远近,自动插值算出颜色。 ### 最终结论 顶点颜色只定义顶点处色彩;**光栅化插值**生成三角形内部过渡颜色,片元着色器接收插值后的颜色值。 任务五 我修改了什么:顶点坐标、顶点顺序、颜色全部和任务2保持不变,仅将图元模式从gl.TRIANGLE_STRIP改为gl.LINE_LOOP 我原先预测:可以得到填充的四边形,只是变成线框样式 实际结果:绘制出闭合的四边形边框,只有轮廓线条,没有内部填充色块。 原因解释:顶点几何数据没有改变;gl.LINE_LOOP只把顶点依次连线并且首尾闭合,只会生成线段图元,不会生成三角形,因此没有填充的面。只有三角形类图元才会产生填充片元。