AI 协作日志

学生 Web 实验作品平台

学号:202412211402015 · 来源:ai-log.md

# 实验一 AI协作记录

> 请记录本人真实的AI协作过程。不要只粘贴AI生成结果,应体现自己的判断、测试和核验。

## AI协作1:
理解gl.vertexAttribPointer()函数

### 我的目标
在实验中出现了这个函数,由于参数较多,我想要了解每一个参数的含义。

### 提示词
函数的参数具体形式

### AI关键回答摘要
WebGL 1.0 中一共 6 个参数
第一个参数含义是attribute 变量的位置(由 getAttribLocation 得到,或 layout(location=) 指定)
第二个参数含义是分量数
第三个参数含义是数据类型
第四个参数含义是是否归一化
第五个参数含义是步长
第六个参数含义是字节偏移

### 我的判断
第五个和第六个参数我暂时判断不了,但是前四个参数是能结合源代码理解的,例如实验里用的是x和y来定位点,所以分量数都是2。又例如实验里第三个参数是gl.FLOAT,这很明显是数据类型的表达。

### 验证方法
没有进行具体的验证,只是略微了解,不让自己在看代码时稀里糊涂。

### 验证结果

### 修正后的结论

---

## AI协作2:
程序调试

### 现象
需要在一个画板上画出一个三角形和一个四边形,实验提示了需要修改vPosition的读取方式。

### 我的初步判断
只需单独创建一个新的Buffer,vPostion的代码是一样的,所以我就简单的创建了一个Buffer,甚至连vPosition的代码都没有重复。

### 给AI的提示词
同一个画板上,两个形状和颜色都不同的图形,更改

### AI给出的关键建议
切换缓存区后要重新vertexAttribPointer,否则读取的还是旧数据。
gl.clear只能调用一次,调用会把所有的图像清空。

### 我实际进行的测试
在新Buffer下重复了vPosition的三行代码。

### 测试结果
原本无法显示的四边形正常显示了。

### 最终原因
就是由于没有重新调用vertexAttribPointer,导致画面只绘画了第一个三角形,而没有绘画四边形。

### 是否采纳AI建议及理由
采纳了,因为确实解决了我的问题。

---