|
返答ありがとうございます
▼L.Entis(開発者)さん:
> で、クリップ画像を描画する方法ですが、rp.dwFlags に E3DRP_RENDER_REV_IMAGE を指定した場合には、rp.pSrcImage に元の画像(ReadImageFile 関数で読み込んだり CreateImage 関数で生成したものなど)を指定し、rp.rev.nViewVertexes, rp.rev.nViewVertexes メンバをつかってクリップして表示したい領域を囲んだ凹でない多角形を指定すれば実現できますので、元の画像バッファへのポインタと矩形情報を管理しておけば良いのではないでしょうか?
というわけで
E3D_RENDER_PARAM rp ;
::eslFillMemory( &rp, 0, sizeof(rp) ) ;
EGL_POINT ptHotSpot = m_Image.GetHotSpot( ) ;
rp.dwFlags = E3DRP_RENDER_REV_IMAGE | E3DSAF_TEXTURE_SMOOTH ;
rp.rgbaColor.rgbMul.dwPixelCode = 0x00FFFFFF ;
rp.rgbaColor.rgbAdd.dwPixelCode = 0;
rp.pSrcImage = m_Image;
E3D_VECTOR_2D ViewVertexes[4];
ViewVertexes[0].x = (REAL32)(ptRect->left);
ViewVertexes[0].y = (REAL32)(ptRect->top);
ViewVertexes[1].x = (REAL32)(ptRect->right);
ViewVertexes[1].y = (REAL32)(ptRect->top);
ViewVertexes[2].x = (REAL32)(ptRect->right);
ViewVertexes[2].y = (REAL32)(ptRect->bottom);
ViewVertexes[3].x = (REAL32)(ptRect->left);
ViewVertexes[3].y = (REAL32)(ptRect->bottom);
rp.rev.vRenderPos = vPos ;
rp.rev.vRevCenter.x = (REAL32) ptHotSpot.x ;
rp.rev.vRevCenter.y = (REAL32) ptHotSpot.y ;
rp.rev.pRevMatrix = matrix ;
rp.rev.nViewVertexes = 4;
rp.rev.pViewVertexes = ViewVertexes;
こんな風にして見ました。
今度は省略無しです(笑)
このときPrepareRenderParamは無事動いているのですが
バッファに何も描画されません。
ちなみに
rp.rev.nViewVertexes = 0;
とした場合はキチンと画像全体が表示されます。
|
|