C++ DirectX 10.1/C++;:如何在ID3D10Resource*纹理上渲染sprite上的文本?

C++ DirectX 10.1/C++;:如何在ID3D10Resource*纹理上渲染sprite上的文本?,c++,text,textures,sprite,directx-10,C++,Text,Textures,Sprite,Directx 10,在DirectX 10/10.1中,我希望使用我的函数中的D3DX10CreateTextureFromFile()在显示纹理的多个显示器的所有四个角上渲染文本,每个纹理由ID3D10Resource*prcST组成 当我在使用sprite渲染文本的OnD3D10rameRender()函数中使用下面类似的内容时,我的纹理不会被渲染,而只有文本以黑色背景渲染。(黑色背景上的文本) 在3个显示器的左上角呈现的文本是“要呈现的文本” 如何在alpha混合ID3D10Resource*纹理上渲染sp

在DirectX 10/10.1中,我希望使用我的函数中的
D3DX10CreateTextureFromFile()
在显示纹理的多个显示器的所有四个角上渲染文本,每个纹理由
ID3D10Resource*prcST
组成

当我在使用sprite渲染文本的
OnD3D10rameRender()
函数中使用下面类似的内容时,我的纹理不会被渲染,而只有文本以黑色背景渲染。(黑色背景上的文本)

在3个显示器的左上角呈现的文本是“要呈现的文本”

如何在alpha混合
ID3D10Resource*
纹理上渲染sprite上的文本

3个显示器上的3个边缘混合纹理如下所示:

在屏幕上渲染文本的工作做得很好。您是否使用四边形纹理?纹理需要一组顶点才能显示。createtexture函数仅将图像数据加载到纹理对象中。然后,您必须传递纹理对象以及一组有序的顶点,以形成一个网格,用于显示纹理。

我正在创建一个101*101网格来显示纹理及其正确渲染。这没有问题。但是,这是一个新的要求,需要在此纹理上显示一些数字(文本)。(请参阅我共享的两个链接中的图像)。现在的问题是,当我使用代码渲染文本时,它会在空白(黑色)屏幕上渲染,但纹理不会渲染。目前,我使用OpenCV通过imwrite()在图像本身上渲染文本。因此,在使用文本之前,您可以通过屏幕上的纹理看到图像,尽管当您添加文本时,会出现黑屏,但文本正在渲染?黑屏通常意味着纹理没有被正确读取。可能是您的精灵渲染器正在清除设备上下文,因此您可能必须传入纹理在你写文本后发送纹理。在你写文本后尝试发送纹理…你在当前设置纹理后正在写文本?
D3DX10CreateTextureFromFile ( pDeviceObj->pDevice, L"tile1.jpg", NULL, NULL, &prcST, &hr );
hr = pDeviceObj->pSprite->Begin(0);
std::wstring left = L"Some text to render";
RECT r;
r.top = 0;
r.bottom = pWindowObj->Height;
r.left = 0;
r.right = pWindowObj->Width;
hr = pDeviceObj->pFont->DrawTextW(pDeviceObj->pSprite, left.c_str(), -1, &r, DT_LEFT | DT_TOP | DT_CALCRECT | DT_NOCLIP, D3DXCOLOR(0.0f, 1.0f, 0.0f, .5f));
hr = pDeviceObj->pSprite->Flush();
hr = pDeviceObj->pSprite->End();
pDeviceObj->pDevice->OMSetBlendState(NULL, 0, 0x0000ffff);