> 一つ目に、モデルを描画する際、マスク処理をテクスチャに反映させる、
> またはそれに近い結果を得ることは可能でしょうか。
roseさんが試されている MV1SetFrameTextureAddressTransform関数を使う方法で
実現できると思います
> 二つ目に、MV1SetFrameTextureAddressTransform関数を使用してリピート設定を試して
> みたのですが、これによるUV座標の変化は、例えばサンプルに書かれている
>
> float2 TexCoords0 : TEXCOORD0 ; // テクスチャ座標
>
> とは別の扱いでしょうか。
MV1SetFrameTextureAddressTransform関数で設定したUV座標の変化は
頂点シェーダーで行う必要があります
MV1SetFrameTextureAddressTransform関数で設定したUV座標の変化は
頂点シェーダーではテクスチャ座標変換行列として存在しています
そのテクスチャ座標変換行列が定数番号の何番に割り当てられているかは
関数リファレンスのLoadVertexShader関数の解説に書かれています
http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_3d.html#R17N2
88~89 テクスチャ座標変換行列の転置行列0( 3Dモデル描画時のみ有効 )
90~91 テクスチャ座標変換行列の転置行列1( 3Dモデル描画時のみ有効 )
92~93 テクスチャ座標変換行列の転置行列2( 3Dモデル描画時のみ有効 )
サンプルプログラムコーナーの
「サンプルプログラム オリジナルシェーダーを使用した3Dモデルの描画基本 ( 要プログラマブルシェーダー2.0一部3.0 )」
ではテクスチャ座標変換行列を使用していませんでしたので、使用するコードに変更しました
http://homepage2.nifty.com/natupaji/DxLib/program/dxprogram_3DModelShaderBase.html#R1N1
具体的には、定数定義の部分に cfTextureMatrix[ 3 ][ 2 ] が加わります
// C++ 側で設定する定数の定義
float4 cfProjectionMatrix[ 4 ] : register( c2 ) ; // ビュー → 射影行列
float4 cfViewMatrix[ 3 ] : register( c6 ) ; // ワールド → ビュー行列
float4 cfLocalWorldMatrix[ 3 ] : register( c94 ) ; // ローカル → ワールド行列
↓
// C++ 側で設定する定数の定義
float4 cfProjectionMatrix[ 4 ] : register( c2 ) ; // ビュー → 射影行列
float4 cfViewMatrix[ 3 ] : register( c6 ) ; // ワールド → ビュー行列
float4 cfTextureMatrix[ 3 ][ 2 ] : register( c88 ) ; // テクスチャ座標操作用行列
float4 cfLocalWorldMatrix[ 3 ] : register( c94 ) ; // ローカル → ワールド行列
そしてテクスチャ座標を出力構造体にセットするコードがただの代入ではなく行列の
計算結果を代入するものに変わります
// テクスチャ座標をセット
VSOutput.TexCoords0 = VSInput.TexCoords0 ;
↓
// テクスチャ座標変換行列による変換を行った結果のテクスチャ座標をセット
VSOutput.TexCoords0.x = dot( VSInput.TexCoords0, cfTextureMatrix[ 0 ][ 0 ] ) ;
VSOutput.TexCoords0.y = dot( VSInput.TexCoords0, cfTextureMatrix[ 0 ][ 1 ] ) ;
よろしければお試しください m(_ _)m