Direct10 StreamOut如何追加顶点数据到尾部?

Viskag 2010-09-03 01:58:41
void SOSetTargets(
[in] UINT NumBuffers,
[in] ID3D10Buffer *const *ppSOTargets,
[in] const UINT *pOffsets
);
An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass.

//=================================================
我有4个顶点数据放在g_pVertexBuffer_SO里(bytewidth很大,D3D10_BIND_VERTEX_BUFFER|D3D10_BIND_STREAM_OUTPUT)
offset[1] = { -1 };
pd3dDevice->SOSetTargets( 1, g_pVertexBuffer_SO, offset );
g_Tech->GetPassByIndex(1)->Apply( 0 );//pass1
pd3dDevice->DrawIndexed(4, 0, 0);

做完这步按理说g_pVertexBuffer_SO应该不止4个顶点了,但是
offset = 0;
pd3dDevice->IASetPrimitiveTopology( D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP);
pd3dDevice->IASetVertexBuffers( 0, 1, &g_pVertexBuffer_SO, &stride, &offset );
g_Tech->GetPassByIndex( 0 )->Apply( 0 );//pass0
pd3dDevice->DrawAuto()的时候一个线段都画不出,不知道错在哪里。。。

//===================
[maxvertexcount(2)]
void GS1( line VS_Input input[2], inout LineStream<VS_Input> gzStream )
{
if( input[1].UV.x < 0.5 && input[1].UV.y >0.5)
{
VS_Input mid = (VS_Input)0;
gzStream.Append( mid );
mid.Pos = float4(0.1f, 0.1f, 0.0f, 0.0f);
gzStream.Append( mid );
gzStream.RestartStrip();
}
}
GeometryShader gsStreamOut1 = ConstructGSWithSO( CompileShader( gs_4_0, GS1() ), "POSITION.xyz; TEXCOORD.xy" );
technique10 myTech
{
pass P0
{
SetVertexShader( CompileShader( vs_4_0, VSfunc() ) );
SetGeometryShader( NULL );
SetPixelShader( CompileShader( ps_4_0, PSfunc() ) );
}
pass P1
{
SetVertexShader( CompileShader( vs_4_0, VS_nochange() ) );
SetGeometryShader( gsStreamOut1 );
SetPixelShader( NULL );
}
}
...全文
149 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
gamemagic 2010-09-03
  • 打赏
  • 举报
回复
学OPENGL的路过
源码直接下载地址: https://pan.quark.cn/s/854bd57df23a 在金融行业中,房产购置贷款是众多人在购置不动产时必须进行的一项财务规划。Matlab作为一种功能强大的数学及数据分析平台,经常被应用于各类复杂的运算,其中包括住房贷款的计算。本文将详细研究运用Matlab开发住房贷款计算程序的相关知识要点,以协助读者掌握如何借助编程技术处理实际的信贷问题。 1. **信贷种类** - **商业信贷**:此类贷款通常由金融机构提供,其利率会随市场行情变化,借款人可选用固定利率或浮动利率方案。 - **公积金信贷**:该类贷款获得政府机构的支持,利率一般低于商业信贷,但设有最高贷款金额的限制。 2. **偿付模式** - **等额本金偿付**:每月支付相同数量的本金,利息部分逐月减少,因此整体还款总额会逐步降低。 - **等额本息偿付**:每月支付固定金额的本金与利息组合,利息部分随本金的逐月减少而递减。 3. **住房贷款计算公式** - **等额本息偿付**:每月还款额=贷款本金×[月利率×(1+月利率)^(贷款期数)]÷[(1+月利率)^(贷款期数)-1]。 - **等额本金偿付**:每月应还本金=贷款总额/贷款期数,每月利息=(贷款余额-累计已还本金)×月利率。 4. **Matlab编程基础** - **变量设定**:在Matlab环境中,首要任务是设定贷款数额、年化利率、贷款时长等核心参数。 - **循环控制结构**:借助for循环来模拟每个还款周期的过程,进行本金与利息的计算。 - **函数构建**:将住房贷款的计算逻辑封装为函数,便于重复使用和测试不同条件下的结果。 5. **Matlab代码编写** - **等额本息函数实现**...

8,324

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧