public void OnDeviceReset(object sender, System.EventArgs e) { Direct3D.Device dev = (Direct3D.Device)sender; dev.RenderState.Lighting = false; if(null != vertexBuffer) { vertexBuffer.Dispose(); } vertexBuffer = new Direct3D.VertexBuffer(m_aVertices[0].GetType(), m_aVertices.Length, dev, Direct3D.Usage.WriteOnly, Direct3D.CustomVertex.TransformedColoredTextured.Format, Direct3D.Pool.Default); vertexBuffer.SetData(m_aVertices, 0, Direct3D.LockFlags.None); dev.VertexShader = null; dev.VertexFormat = Direct3D.CustomVertex.TransformedColoredTextured.Format; dev.SetStreamSource(0, vertexBuffer, 0); if(null != indexBuffer) { indexBuffer.Dispose(); } indexBuffer = new Direct3D.IndexBuffer(m_aIndices[0].GetType(), m_aIndices.Length, dev, Direct3D.Usage.WriteOnly, Direct3D.Pool.Default); indexBuffer.SetData(m_aIndices, 0, Direct3D.LockFlags.None); dev.Indices = indexBuffer; System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly(); System.IO.Stream stream = assembly.GetManifestResourceStream("_4_Texture.photo.png"); // If you want to know the names of all of the embedded resources, // you can get an array of strings with the names. // string[] resourceNames = assembly.GetManifestResourceNames(); // If you want to load the texture from a file instead of an embedded resource, you can do this: // texture = Direct3D.TextureLoader.FromFile(dev, "photo.png"); if(null != texture) { texture.Dispose(); } texture = Direct3D.TextureLoader.FromStream(dev, stream); stream.Close(); dev.SetTexture(0, texture); }
public void Draw() { vertices = new Direct3D.CustomVertex.PositionColored[700]; LowestPartVertexes(0); //highest vertex is now 36 HiltVertexes(36); //highest vertex is now 104 BladeVertexes(104); //highes vertex should now be about 424 vb = new Direct3D.VertexBuffer(typeof(Direct3D.CustomVertex.PositionColored), vertices.Length, DXDevice, Direct3D.Usage.Dynamic | Direct3D.Usage.WriteOnly, Direct3D.CustomVertex.PositionColored.Format, Direct3D.Pool.Default); vb.SetData(vertices, 0, Direct3D.LockFlags.None); }
public void OnDeviceReset(object sender, System.EventArgs e) { Direct3D.Device dev = (Direct3D.Device)sender; dev.RenderState.Lighting = false; if(null != vertexBuffer) { vertexBuffer.Dispose(); } vertexBuffer = new Direct3D.VertexBuffer(m_aVertices[0].GetType(), m_aVertices.Length, dev, Direct3D.Usage.WriteOnly, Direct3D.CustomVertex.TransformedColored.Format, Direct3D.Pool.Default); vertexBuffer.SetData(m_aVertices, 0, Direct3D.LockFlags.None); dev.VertexShader = null; dev.VertexFormat = Direct3D.CustomVertex.TransformedColored.Format; dev.SetStreamSource(0, vertexBuffer, 0); if(null != indexBuffer) { indexBuffer.Dispose(); } indexBuffer = new Direct3D.IndexBuffer(m_aIndices[0].GetType(), m_aIndices.Length, dev, Direct3D.Usage.WriteOnly, Direct3D.Pool.Default); indexBuffer.SetData(m_aIndices, 0, Direct3D.LockFlags.None); dev.Indices = indexBuffer; }
public void Build(Renderer renderer) { FinalizeSubset(); vertices = new Vertex[vertexAddresses.Count]; int i = 0; foreach (KeyValuePair <int, Vertex> a in vertexAddresses) { vertices[i++] = a.Value; } foreach (Subset sub in subsets) { sub.indexBuffer = new D3D.IndexBuffer(typeof(int), sub.indices.Length, renderer.device, D3D.Usage.None, D3D.Pool.Managed); sub.indexBuffer.SetData(sub.indices, 0, D3D.LockFlags.Discard); } if (tmpMaxVertex == 0) { tmpMaxVertex = 1; } vertexBuffer = new D3D.VertexBuffer(typeof(Vertex), tmpMaxVertex, renderer.device, D3D.Usage.None, D3D.VertexFormats.Position, D3D.Pool.Managed); vertexBuffer.SetData(vertices, 0, D3D.LockFlags.Discard); usedEffect = renderer.defaultEffect; }
/// <summary> /// Draw some text on the screen /// </summary> public void DrawText(float xpos, float ypos, Color color, string text, RenderFlags flags) { if (text == null) { return; } // Setup renderstate savedStateBlock.Capture(); drawTextStateBlock.Apply(); device.SetTexture(0, fontTexture); device.VertexFormat = CustomVertex.TransformedColoredTextured.Format; device.PixelShader = null; device.SetStreamSource(0, vertexBuffer, 0); // Set filter states if ((flags & RenderFlags.Filtered) != 0) { samplerState0.MinFilter = TextureFilter.Linear; samplerState0.MagFilter = TextureFilter.Linear; } // Adjust for character spacing xpos -= spacingPerChar; float fStartX = xpos; // Fill vertex buffer int iv = 0; int dwNumTriangles = 0; foreach (char c in text) { if (c == '\n') { xpos = fStartX; ypos += (textureCoords[0, 3] - textureCoords[0, 1]) * textureHeight; } if ((c - 32) < 0 || (c - 32) >= 128 - 32) { continue; } float tx1 = textureCoords[c - 32, 0]; float ty1 = textureCoords[c - 32, 1]; float tx2 = textureCoords[c - 32, 2]; float ty2 = textureCoords[c - 32, 3]; float w = (tx2 - tx1) * textureWidth / textureScale; float h = (ty2 - ty1) * textureHeight / textureScale; int intColor = color.ToArgb(); if (c != ' ') { fontVertices[iv++] = new CustomVertex.TransformedColoredTextured(new Vector4(xpos + 0 - 0.5f, ypos + h - 0.5f, 0.9f, 1.0f), intColor, tx1, ty2); fontVertices[iv++] = new CustomVertex.TransformedColoredTextured(new Vector4(xpos + 0 - 0.5f, ypos + 0 - 0.5f, 0.9f, 1.0f), intColor, tx1, ty1); fontVertices[iv++] = new CustomVertex.TransformedColoredTextured(new Vector4(xpos + w - 0.5f, ypos + h - 0.5f, 0.9f, 1.0f), intColor, tx2, ty2); fontVertices[iv++] = new CustomVertex.TransformedColoredTextured(new Vector4(xpos + w - 0.5f, ypos + 0 - 0.5f, 0.9f, 1.0f), intColor, tx2, ty1); fontVertices[iv++] = new CustomVertex.TransformedColoredTextured(new Vector4(xpos + w - 0.5f, ypos + h - 0.5f, 0.9f, 1.0f), intColor, tx2, ty2); fontVertices[iv++] = new CustomVertex.TransformedColoredTextured(new Vector4(xpos + 0 - 0.5f, ypos + 0 - 0.5f, 0.9f, 1.0f), intColor, tx1, ty1); dwNumTriangles += 2; if (dwNumTriangles * 3 > (MaxNumfontVertices - 6)) { // Set the data for the vertexbuffer vertexBuffer.SetData(fontVertices, 0, LockFlags.Discard); device.DrawPrimitives(PrimitiveType.TriangleList, 0, dwNumTriangles); dwNumTriangles = 0; iv = 0; } } xpos += w - (2 * spacingPerChar); } // Set the data for the vertex buffer vertexBuffer.SetData(fontVertices, 0, LockFlags.Discard); if (dwNumTriangles > 0) { device.DrawPrimitives(PrimitiveType.TriangleList, 0, dwNumTriangles); } // Restore the modified renderstates savedStateBlock.Apply(); }