[英]Loading a Pixel Shader in SDL2 Fails
我一直在努力實現的YUV422轉RGB像素着色器轉換SDL_render_d3d.c
。 我無法獲得與const DWORD shader_data[]
使用的編譯代碼相同的格式,使用了數組const DWORD shader_data[]
,效果很好,但它是420轉換器,列出了源代碼和匯編器以及編譯該代碼所需的命令行匯編程序的源代碼。
當我使用fxc編譯着色器(.hlsl)時,我得到了一個頭文件,其中以'DXBC'開頭為字節碼,據我從大量的搜索中了解,它是hlsl字節碼的前綴。 我還嘗試在運行時從文件進行編譯,這還會創建一個包含該文件的緩沖區。
當我嘗試從中創建PixelShader時,代碼為0x8876086c失敗,
有誰知道如何創建格式化為即用型格式的DWORD? 這似乎是前進的最簡單方法
工作格式:
const DWORD shader_data[] = {
0xffff0200, 0x05000051, 0xa00f0000, 0xbd808081, 0xbf008081, 0xbf008081,
....... };
fxc生成的格式不起作用:
const BYTE g_YuvToRgb[] =
{
68, 88, 66, 67, 25, 203,
28, 33, 88, 181, 245, 169,
...... };
沒有真正的理由將shader保留為DWORD
數組,只需將帶有shader的指針轉換為帶有指向DWORD *
緩沖區,並確保緩沖區大小是sizeof(DWORD)
倍數(應該是)。 錯誤代碼0x8876086c
是D3DERR_INVALIDCALL
因此您的編譯着色器可能由於某些原因無法使用。 您如何編譯? 您是否指定了所需的着色器模型?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.