我必须在Directx9和Directx11中创建具有D3DFMT_A8L8等效格式的纹理。但是文档中的注释对我来说并不明确。有人可以解释应该怎么做吗?创建输入布局时,我面临无效的参数错误。
D3DFMT_A8L8 => DXGI_FORMAT_R8G8_UNORM 注意:在着色器中使用swizzle .rrrg复制红色并将绿色移至alpha组件以获得Direct3D 9行为。
答案 0 :(得分:0)
在Direct3D 9中,“亮度”格式将自动在着色器中读取为RGB值(已复制),因为它们是灰度格式。在Direct3D 10+中,没有“亮度”格式。有一种和两种通道格式,它们之间没有“特殊行为”。
因此,在着色器中,<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id=infoDiv>This is div info</div>
纹理的第一个通道位于'r'通道中,第二个通道位于'g'通道中。 //Clear the screen
system("clear");
//Declare variables
float weight, height, bmi;
int number_of_inputs = 2; //Interger constant or literal
//Get grades from user
printf("Please enter Weight in Pounds: ");
scanf("%f", &weight);
printf("Please enter your Height in inches: ");
scanf("%f", &height);
//Calculate the BMI
bmi = 703 * (weight / (height * height) );
//Display what is the health status of the user
if (bmi >= 18.5 <= 24)
{
printf("Your Health Status is Normal \n");
}
else if (bmi <= 18.5 >= 0)
{
printf("Your Health Status is Underweight \n");
}
else if (bmi >= 25 <= 29)
{
printf("Your Health Status is Overweight \n");
}
else if (bmi >= 30 <= 999)
{
printf("Your Health Status is Obese \n");
}
printf("BMI: %f \n", bmi);
return (0);
具有与DXGI_FORMAT_R8G8_UNORM
相同的内存占用量,即两个8位无符号普通整数数据通道,但是如果您想要现代着色器中的行为与旧着色器匹配,则必须使用着色器细节明确地做到这一点:
DXGI_FORMAT_R8G8_UNORM
这与输入布局完全无关。这就是纹理采样器的工作方式。