![]() |
1
5
m_pvb指向一个图形对象,在这种情况下,可能是一个顶点缓冲区。这个对象所保存的数据通常不会在CPU可访问的内存中——它可能被保存在图形硬件的板载RAM中,或者根本没有被分配;它可能在任何特定的时间被GPU使用;因此,如果您想从中读取或写入数据,您需要告诉图形子系统这一点,这就是lock()函数所做的。-与GPU同步,确保主内存中有一个足够大的缓冲区来存储数据,并且从CPU的角度来看,它包含了您此时期望的数据,并将指向该主内存的指针返回给您。需要有一个相应的unlock()调用来告诉GPU您已经完成了对对象的读取/修改。 要回答关于如何确定缓冲区大小的问题,请查看正在构建顶点缓冲区的位置-您应该看到顶点格式的描述以及传递给创建它的函数的元素计数。 |
![]() |
2
1
您正在将指向customVertex指针(指向指针的指针)的指针压入lock函数,因此lock本身必须/需要创建customVertex对象,并将指针设置为指向它创建的对象。 |
![]() |
3
1
为了在DX中修改顶点缓冲区,必须锁定它。为了实现这一点,dx api将只通过调用锁来显示vb的内部。 您的代码正在传入pVertexArray的地址,该地址锁定了vb的内部数据。然后代码继续修改顶点数据,大概是为渲染做准备。 |
![]() |
4
1
你问错了问题,不是它怎么知道你需要x个对象,而是你怎么知道它需要x个对象。在中传递指向结构的指针的指针,函数返回指向已在内存中分配的结构的指针(从首次初始化顶点缓冲区时开始)。一切都在那里,你只是请求一个指向数组的指针来处理它,然后“释放它”,这样dx就知道读取顶点缓冲区并上传到gpu。 |
![]() |
5
1
创建顶点缓冲区时,必须指定大小。当调用lock()时,将0作为要锁定的大小传递,这将告诉它锁定顶点缓冲区的整个大小。 |
![]() |
AstralHex · 矩阵乘法代码工作不正常 4 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 4 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 4 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 4 月前 |