AI 协作日志
学生 Web 实验作品平台
学号:202412211402018 · 来源:ai-log.md
# 实验一 AI协作记录 > 请记录本人真实的AI协作过程。不要只粘贴AI生成结果,应体现自己的判断、测试和核验。 ## AI协作1:理解数据流 ### 我的目标 刚拿到实验框架,整体不清楚整套实验该如何下手,想搞懂WebGL2完整的绘制流程 ### 提示词 帮我分析一下这个实验怎么做,中间有什么步骤 ### AI关键回答摘要 JavaScript里的顶点数据存放在CPU内存,GPU不能直接访问。需要创建Buffer,通过bufferData把数据上传到GPU显存;vertexAttribPointer设置数据解析方式,建立缓冲区和着色器输入的映射;顶点着色器处理每个顶点;之后经过图元组装,光栅化生成大量片元并做属性插值;片元着色器计算每个像素颜色输出到画布。 ### 我的判断 图形渲染是一条完整流水线,并不是定义完数组就可以绘图。Buffer上传、配置顶点属性映射是CPU向GPU传递数据的关键,也是写代码时容易忽略的地方。 ### 验证方法 对照现有代码,在js和html中找到AI提到的各个环节对应的代码片段,梳理完整的数据流向。 ### 验证结果 代码和描述的流程能够一一对应:定义顶点数组、创建绑定Buffer、上传数据、配置并开启顶点属性,最后调用drawArrays执行绘制,着色器代码定义在html内。 ### 修正后的结论 CPU端JS的数据无法直接被GPU使用,必须完成Buffer上传和顶点属性映射配置,才能正常渲染图形,缺少任意步骤绘制都会失败。 --- ## AI协作2:程序调试 ### 现象 任务二修改代码后网页运行时,一直显示正在运行,迟迟没有图像出现。 ### 我的初步判断 可能是绘制的代码出错,怀疑drawArrays调用存在问题,也猜测顶点数据配置存在异常。 ### 给AI的提示词 做任务二时,运行时图形没有显示。请帮我排查出问题。 ### AI给出的关键建议 1. 检查`drawArrays`传入的图元模式是否与顶点数据适配; 2. 检查`drawArrays`第三个参数,即待绘制顶点数量是否正确; 3. 确认顶点Buffer绑定、顶点属性配置已经完成,状态栏辅助判断顶点数据是否加载成功。 ### 我实际进行的测试 观察页面状态栏显示“已读取顶点数据,请继续补全 drawArrays”,说明顶点数据已经正常加载,if分支可以进入。查看`drawArrays`调用语句,我错误把第三个顶点数量参数硬编码写为3,任务2四边形需要4个顶点进行绘制。修改第三个参数为`vertexCount`,保存代码后刷新页面。 ### 测试结果 修正`drawArrays`的顶点计数参数后,四边形正常渲染显示。 ### 最终原因 `drawArrays`内部参数错误。虽然可以进入绘制分支,但绘制顶点数量写成3,仅读取前3个顶点。对于`TRIANGLE_STRIP`,3个顶点只能绘制一个三角形,无法生成四边形,页面没有出现完整图形。 ### 是否采纳AI建议及理由 采纳AI的建议。AI提醒我重点检查drawArrays的传入参数,定位到顶点计数参数设置错误。本次调试认识到drawArrays第三个参数代表顶点的个数,不是数组中浮点数的数量,必须和当前图元需要的顶点数目匹配。 ## AI协作3:顶点属性与颜色 ## 我的目标 实现任务4顶点颜色时,颜色渲染效果和预期不符,想找到问题所在。 ### 提示词 任务4是颜色与预期不符,请帮我分析问题出现在哪里。 ### AI关键回答摘要 需要留意`vertexAttribPointer`的size参数。位置数据每个顶点只有x、y两组数值,size为2;颜色包含RGBA四组数值,size应为4。GPU会依据size移动读取指针,一旦设置不一致,缓冲区数据读取就会错位,颜色渲染异常。 ### 对照实验 将颜色缓冲区size参数临时改为3,观察画面表现,实验结束恢复为4。 ### 实际现象 size改为3,三角形颜色混乱,没有产生平滑渐变;恢复参数为4,正常的顶点插值渐变效果出现。 ### 我的解释 size设置错误,GPU读取每个顶点颜色时没有读取完整的RGBA数据,读取指针发生偏移,后续顶点获取到错误缓冲区内容。 ### 最终结论 多套顶点缓冲区开发时,`vertexAttribPointer`的size要匹配对应属性的数据长度,参数不匹配会造成缓冲区读取偏移,引发渲染错误。