GetIndices()会在CreateIndexBuffer()和SetIndices()之后返回相同的缓冲区指针吗?
Will GetIndices() return the same buffer pointer after CreateIndexBuffer() and SetIndices()?
在Direct3d中,我正在寻求在Direct3d顶点或索引缓冲区创建时注入一些自定义代码,以及在Direct3d渲染调用的时候。我希望在渲染时,我可以以某种方式映射IDirect3dIndexBuffer9通过IDirect3dDevice9::GetIndices()获得的非常相同的索引缓冲区,因为Direct3d知道它,这是通过IDirect3dDevice9::CreateIndexBuffer创建的。
我的具体问题是棘手的回答从API文档:如果我创建一个索引缓冲区IDirect3dDevice9: CreateIndexBuffer()和存储的副本返回的指针,然后在晚些时候调用IDirect3dDevice9: SetIndices使用指针,将电话后IDirect3dDevice9: GetIndices()返回一个指针值相同,用于SetIndices(),还是有一个机会,指针指Direct3d知道相同的缓冲,但有不同的指针值在客户端我工作吗?我可以想象一个场景,例如,Direct3d .dll在内部拥有一个唯一的持久对象,但在调用GetIndices()时为客户端创建新的轻量级COM包装器,因此COM对象指针将是不同的。
在官方的Direct3d规范中有这样的保证(或警告)吗?我可以编写一些测试代码来查看,但我担心如果结果是肯定的,那么我将对实现的意外进行编码,而不是对API的契约进行编码。它应该是相同的接口指针,尽管在Direct3D 9中,如果使用D3DCREATE_PUREDEVICE,您应该小心Get。这些接口指针都指向Direct3D运行时在用户模式进程内存中分配的东西。
在Direct3D中不能挂起指针的主要地方是:
- 锁/映射返回的指针。他们应该在短时间内解锁/取消映射。
- 所有的Direct3D对象在设备的所有副本被释放后都是无效的
- Direct3D 9丢失的设备你有很多有效的指针接口不能做任何事情,直到你重置
相关文章:
- 将字符缓冲区强制转换为函数指针
- 将指针作为缓冲区传递到第一个字符串元素
- 将constexpr字节数组与缓冲区的一部分(指向数据的指针)进行比较
- char p[0]表示自动分配的缓冲区还是安全指针
- 指针符号在参数规范中表示什么,例如:(char16 *缓冲区,int32 大小)?C++
- OpenGL:使用指向静态数据的指针数组传递缓冲区数据
- 重置/包装 C/C++ 中的变量(环缓冲区指针)
- 将 char* 推送到矢量时出现问题,但在每次迭代后,它会将指向相同值缓冲区的指针添加到矢量中
- 返回指向矢量数据的指针,而不复制缓冲区和内存泄漏
- memcpy指向炭缓冲区的指针
- 来自 2 个指针的组合缓冲区,无需复制
- 来自指针向量的OpenGL阵列缓冲区
- C++:使用std::ifstream读取二进制文件后删除缓冲区/指针时发生访问冲突
- 如何将一个缓冲区指针的内容复制到另一个缓冲区指针
- 正在将缓冲区/指针设置为null
- 将额外的字节填充到要通过网络发送的flatbuffer的缓冲区指针
- 从缓冲区指针计算堆栈中的返回地址
- MPI_scatter:缓冲区指针无效
- MPI_Pack:无效缓冲区指针
- GetIndices()会在CreateIndexBuffer()和SetIndices()之后返回相同的缓冲区指针吗?