今天热门
热点:

D3D中几个十分重要的函数,D3D十分重要函数.


求三个函数:

1.在OPenGL中有gluProject(),根据物体的本地坐标得到屏幕上的投影坐标,D3D中有没有类似的函数?
2.在OPenGL中有glReadPixels(),读取像素值,D3D中有没有类似的函数?
3.在OPenGL中有glReadBuffer(GL_BACK),读取后台,D3D中用什么啊?是GetBackBuffer()吗?

解决方案

1.只要设置了投影就可以了



        //
// Set the projection matrix.
//

D3DXMATRIX proj;
D3DXMatrixPerspectiveFovLH(
&proj,
D3DX_PI * 0.5f, // 90 - degree
(float)Width / (float)Height,
1.0f,
1000.0f);
Device->SetTransform(D3DTS_PROJECTION, &proj);


其他的没有研究,呵呵

1.在DX9(包括)之前可以使用SetTransform(D3DTS_PROJECTION,&proj);设置投影矩阵,从DX10开始不再有固定管线,一律从Shader走
2.见3
3.IDirect3DDevice9::GetBackBuffer 可以获得当前桢后备缓冲,形式为一个IDirect3DSurface9指针,然后调用IDirect3DSurface9::LockRect可以获得后备缓冲中的像素.但是强烈不建议获取后备缓冲,GetBackBuffer以后会打断D3D的工作,造成桢速率下降,除非万不得已不要这么干.至于读取一个像素,如果你像获得屏幕或者后备缓冲的中的像素那么只能靠上面的方法,但是有更好的方法,就是RenderToTexture,然后从RenderTarget中取像素,这样会比GetBackBuffer好的多

Lock整个区域不就相当于Lock其中的每一部分么,而且作为后备缓冲一旦Lock了就中断操作了,即使Lock其中一部分.Lock一部分别的部分照样不能用

up,学习

首先Backbuffer是一段内存(显存)一张Surface,不可能带有3D信息,它能提供给你的就是哪行哪列的像素,所以关于投影完了之后的2D坐标(也就是投影到back buffer的哪个像素)要你自己算,算出了2D坐标然后从Backbuffer中读.
我非常不理解你到底要干什么用

R2T没有难的啊
SetRenderTarget 把你的Target设置好就开始画你的场景呗
操作Texture的数据也不难啊,LockRect阿,我没看到你的问题在哪啊

你把你的Lock代码贴出来

你有单步调试每一步吗?CreateTexture/GetSurfaceLevel/SetRenderTarget 3个返回的都是D3D_OK吗?

读取颜色可以用COLORREF clr=GetPixel(hDC,ptx,pty);吧

1,你应该是想实现鼠标选取之类的功能吧,D3D中用D3DXIntersect,
看D:\Program Files\Microsoft DirectX SDK (November 2008)\Samples\C++\Direct3D\Pick
后面的两个问题应该是要用LockRect之后操作了
你最好说下你想实现什么功能,可能会有更好的办法,不一定要完全对着opengl来搞

www.zrccd.nettrue/topics/20180124/125166.htmlTechArticleD3D中几个十分重要的函数,D3D十分重要函数. 求三个函数: 1.在OPenGL中有gluProject(),根据物体的本地坐标得到屏幕上的投影坐标,D3D中有没有类似的函数? 2.在OPenGL中有glReadPixels()...

相关文章

    暂无相关文章

用户评论

大家都在看