|
我在学习写D3D8的程序。是个在D3D中用帖图的方法来实现二维描绘的。为了让渲染模块能实时渲染被“数据控制类”修改的“基本数据”(基本数据包括:有多少个要渲染的对象,分别的帖图是什么,还有位置。数据控制类:是我自己写的,习惯了MFC中的文档/视图模式)
我把“基本数据”写成了链表。
struct MYOBJECT
{
MYOBJECT * TOP; //上一链
MYOBJECT * NEXT; //下一链
int P; //object的属性
float fH,fW; //object的长和宽
float fx,fy; //object的当然位置,最终屏幕位置结果由矩阵变换后得出。
LPCTSTR mFileName; //纹理的文件名
LPDIRECT3DVERTEXBUFFER8 *g_pVertices;
LPDIRECT3DTEXTURE8 *g_pText;
};
在每个循环中都会根据链表的链数从头开始渲染。
可是总是非法操作,说d3d8.dll文件产生无效页。我跟踪了程序的所有变量的变化(当然,特别注意了链表数据的变化),没有发现明显的错误。渲染单幅图像(不用链表)时就不会出错。
不明白!按道理应该行的通啊。
请教高手,我的作法是不是不可行啊。在链表中保存顶点指针和纹理指针是不是不行,(这是我自己想出来的)。因为微软的例程中是固定了要渲染对象的个数,做的数组。而我的程序不想固定对象的个数。 |
|