これは、いくつかの c# ドキュメントと構文を Visual Basic のものに変換することの問題です。私は Visual Basic で書いており、4.0 XNA リフレッシュ プラットフォームを使用しています。
私はRiemers.netで ac# チュートリアルに従っていますが、頂点、位置、色、および法線を処理するために彼の構造を再現するのに苦労しました。ビルド済みの VertexPositionColor & .VertexDeclaration を使用して、プログラムを正常に実行できました。
この問題の C# コードは次のとおりです。
public struct VertexPositionColorNormal
{
public Vector3 Position;
public Color Color;
public Vector3 Normal;
public readonly static VertexDeclaration VertexDeclaration = new VertexDeclaration
(
new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),
new VertexElement(sizeof(float) * 3, VertexElementFormat.Color, VertexElementUsage.Color, 0),
new VertexElement(sizeof(float) * 3 + 4, VertexElementFormat.Vector3, VertexElementUsage.Normal, 0)
);
}
そして、これは変換での私の試みです
Public Structure VertexPositionColorNormal
Public Position As Vector3
Public Color As Color
Public Normal As Vector3
Public Shared SizeInBytes As Integer = 7 * 4
Public Shared ReadOnly VertexDeclaration As VertexElement() = New VertexElement() _
{New VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0), _
New VertexElement(4 * 3, VertexElementFormat.Color, VertexElementUsage.Color, 0), _
New VertexElement(4 * 4, VertexElementFormat.Vector3, VertexElementUsage.Normal, 0)}
End Structure
私の試みは構文的に正しいように見えますが、次の行でエラーが発生します。
GraphicsDevice.DrawUserIndexedPrimitives(PrimitiveType.TriangleList, vertices, 0, vertices.Length, indices, 0, indices.Length / 3, VertexPositionColorNormal.VertexDeclaration)
そして、エラーの次の説明が表示されます。
エラー 18
アクセス可能な 'DrawUserIndexedPrimitives' を次の引数で呼び出すことができないため、オーバーロードの解決に失敗しました:'Public Sub DrawUserIndexedPrimitives(Of VertexPositionColorNormal)(primitiveType As Microsoft.Xna.Framework.Graphics.PrimitiveType、vertexData() As VertexPositionColorNormal、vertexOffset As Integer、numVertices As Integer、indexData() As Short、indexOffset As Integer、primitiveCount As Integer、vertexDeclaration As Microsoft.Xna.Framework.Graphics.VertexDeclaration)': 'Integer' は 'Short' から派生していないため、型 'Integer の 1 次元配列' の値を 'Short の 1 次元配列' に変換できません。
'Public Sub DrawUserIndexedPrimitives(Of VertexPositionColorNormal)(primitiveType As Microsoft.Xna.Framework.Graphics.PrimitiveType、vertexData() As VertexPositionColorNormal、vertexOffset As Integer、numVertices As Integer、indexData() As Short、indexOffset As Integer、primitiveCount As Integer、vertexDeclaration As Microsoft.Xna.Framework.Graphics.VertexDeclaration)':タイプ 'Microsoft.Xna.Framework.Graphics.VertexElement の 1 次元配列' の値を 'Microsoft.Xna.Framework.Graphics.VertexDeclaration' に変換できません。
'Public Sub DrawUserIndexedPrimitives(Of VertexPositionColorNormal)(primitiveType As Microsoft.Xna.Framework.Graphics.PrimitiveType、vertexData() As VertexPositionColorNormal、vertexOffset As Integer、numVertices As Integer、indexData() As Integer、indexOffset As Integer、primitiveCount As Integer、vertexDeclaration As Microsoft.Xna.Framework.Graphics.VertexDeclaration)':タイプ 'Microsoft.Xna.Framework.Graphics.VertexElement の 1 次元配列' の値を 'Microsoft.Xna.Framework.Graphics.VertexDeclaration' に変換できません。
C:\Users\Xheis-Overlord\Documents\Visual Studio 2010\Projects\Test_Terrains2\Test_Terrains2\Test_Terrains2\Game1.vb 416 13 Test_Terrains2