AI 协作日志
学生 Web 实验作品平台
学号:202412210603025 · 来源:ai-log.md
# 实验一 AI协作记录 > 请记录本人真实的AI协作过程。不要只粘贴AI生成结果,应体现自己的判断、测试和核验。 ## AI协作1:理解数据流 ### 我的目标 学会 WebGL 基础绘制流程,掌握顶点数据上传 GPU、缓冲区、着色器、drawArrays 的完整数据流,修改顶点与颜色参数,渲染一个三角形 ### 提示词 帮我完成 WebGL 任务 1,写三角形顶点,设置颜色,给出可运行完整代码,解释 WebGL 从 JS 数据到画面的数据流 ### AI关键回答摘要 1. 在 JS 中用 Float32Array 存放顶点坐标,坐标范围 - 1~1; 2. 完整流程:创建 Buffer→绑定 Buffer→上传顶点数据→获取顶点属性地址→开启属性→设置 uniform 颜色→调用 drawArrays; 3. drawArrays 触发 GPU 执行着色器,顶点着色器处理位置,片元着色器填充颜色。 ### 我的判断 AI 给出的流程顺序符合 WebGL 状态机逻辑,但最初给出的`let`声明变量,在这份老式`"use strict"`模板里可能存在语法问题,需要替换为`var`。顶点坐标排布需要合理,防止图形超出画布 ### 验证方法 复制代码,把`let`改成`var`,打开网页,修改顶点坐标、颜色数值观察图形变化 ### 验证结果 修改 var 之后代码无报错,成功渲染三角形;改动顶点会改变三角形位置形状,修改 uniform4f 的值会改变整体颜色 ### 修正后的结论 WebGL 绘制的核心数据流:JS 构造顶点数组→存入 GPU 缓冲区→顶点着色器读取位置→光栅化生成片元→片元着色器输出颜色;WebGL 是状态机,绘制时使用当前绑定的缓冲区和 uniform 参数 --- ## AI协作2:程序调试 ### 现象 初始代码顶点数组为空,没有绘制调用,画布清空后看不到图形;要求只用 4 个顶点绘制实心四边形 ### 我的初步判断 需要填写 4 组顶点坐标,选择合适图元;4 个顶点想要拼成实心四边形适合 TRIANGLE_STRIP 三角带模式 ### 给AI的提示词 帮我完成 WebGL 任务 2,填写 4 个顶点数据,使用 TRIANGLE_STRIP 模式绘制完整四边形,补全 drawArrays 代码并给出可运行的完整代码 ### AI给出的关键建议 1. TRIANGLE_STRIP 可以用 4 个顶点拼接两个三角形组成四边形,顶点顺序采用左上、右上、左下、右下; 2. 顶点坐标控制在 - 1~1 之间; 3. 可以切换 POINTS、LINE_STRIP、TRIANGLES 等多种图元做对比 ### 我实际进行的测试 1. 填入 4 组顶点,补全 TRIANGLE_STRIP 绘制代码; 2. 临时更换不同图元模式,分别观察渲染效果。 ### 测试结果 TRIANGLE_STRIP 成功渲染实心四边形;POINTS 只显示 4 个顶点;LINE_STRIP 画出不闭合折线;TRIANGLES 在 4 顶点下无法形成完整实心四边形。 ### 最终原因 图元模式决定顶点如何被组装成基础图形。TRIANGLE_STRIP 依次复用相邻顶点生成三角形,节省顶点数量。 ### 是否采纳AI建议及理由 采纳。顶点排布和绘图模式选择符合实验需求,多模式对照帮助理解不同图元的差异 --- ## AI协作3:顶点属性与颜色 ### 我的目标 在同一张画布上先后绘制两个独立图形,每个图形使用独立 Buffer、不同颜色,理解多次绘制的状态切换。 ### 提示词 补全 task3.js,左侧放三角形,右侧放四边形,各自独立 Buffer,颜色不一样,给出完整代码。 ### AI关键回答摘要 1. 三角形、四边形分开定义顶点数组; 2. 每个图形都要独立创建 Buffer,一套 Buffer 对应一组顶点; 3. 每次绘制前绑定对应缓冲区、设置 uColor 颜色,再调用 drawArrays;三角形用 TRIANGLES,四边形用 TRIANGLE_STRIP。 ### 对照实验 只写一个 Buffer、只设置一次颜色,尝试一次性画出两个图形 ### 实际现象 单 Buffer 方案无法实现,只能画出最后一组图形;必须每绘制一个物体,重新绑定对应数据、更新颜色 ### 我的解释 WebGL 绘制会使用当前激活的缓冲区与着色器 uniform 状态。多物体渲染需要**依次切换状态、分批绘制**,也就是多次 drawArrays ### 最终结论 多物体绘制不是一次性上传所有数据,而是循环 “绑定数据→设置着色器参数→绘制” 的流程