No dobra. Poddaje się. Mam dość. Ale od początku:
Parę tygodni temu postanowiłem zainteresować się directX -em. Jako tutorial wybrałem oczywiście ten z naszej strony. Wykonałem pierwsze 3 kroki - wszystko działało dobrze. W 4 kroku jednak, (wykorzystanie tekstur) pojawił się ZONK. Błąd, znaczy się. Nie tyle błąd kompilacji - z tym można byłoby walczyć, siłować się z komputerem, próbować nowych ścieżek, i tak dalej. Wszystko uruchamia się pięknie, tyle że... Na kwadracie w którym wyświetlam teksturę pojawia się nie owa tekstura ale LEWY GÓRNY wierzchołek obrazka, zamiast cały. Żeby nie przedłużać - kod klasy TDirectX:
<font size="2"> ``` using System; using System.Drawing; using System.Windows.Forms; using System.Collections.Generic; using Microsoft.DirectX; using Microsoft.DirectX.Direct3D; using System.ComponentModel;namespace Program
{
class TDirectX
{
private Device device;
private Control parent;
private CustomVertex.TransformedTextured[] vertex;
private Texture texture;
public TDirectX(Control parent, bool windowed)
{
try
{
this.parent = parent;
PresentParameters presentParameters = new PresentParameters();
presentParameters.Windowed = windowed;
presentParameters.SwapEffect = SwapEffect.Discard;
if (!windowed)
{
presentParameters.FullScreenRefreshRateInHz = 60;
presentParameters.BackBufferWidth = 800;
presentParameters.BackBufferHeight = 600;
presentParameters.BackBufferCount = 1;
presentParameters.BackBufferFormat = Format.X8R8G8B8;
presentParameters.PresentFlag = PresentFlag.None;
}
device = new Device(0, DeviceType.Hardware, parent, CreateFlags.SoftwareVertexProcessing, presentParameters);
device.DeviceLost += new EventHandler(this.InvalidateDeviceObjects);
device.DeviceReset += new EventHandler(this.RestoreDeviceObjects);
device.Disposing += new EventHandler(this.DeleteDeviceObjects);
device.DeviceResizing += new CancelEventHandler(this.EnvironmentResizing);
Initialize();
}
catch
{
MessageBox.Show("konstruktor");
}
}
private void Initialize()
{
vertex = new CustomVertex.TransformedTextured[4];
vertex[0].X = 0;
vertex[0].Y = 0;
vertex[0].Z = 0;
vertex[0].Tu = 0;
vertex[0].Tv = 0;
vertex[1].X = 227;
vertex[1].Y = 0;
vertex[1].Z = 0;
vertex[1].Tu = 1;
vertex[1].Tv = 0;
vertex[2].X = 0;
vertex[2].Y = 264;
vertex[2].Z = 0;
vertex[2].Tu = 0;
vertex[2].Tv = 1;
vertex[3].X = 227;
vertex[3].Y = 264;
vertex[3].Z = 0;
vertex[3].Tu = 1;
vertex[3].Tv = 1;
System.IO.Stream stream = new System.IO.FileStream(@"C:\Documents and Settings\jarek\Moje dokumenty\Moje obrazy\Darkness.bmp", System.IO.FileMode.Open);
texture = new Texture(device, stream, Usage.Dynamic, Pool.Default);
stream.Dispose();
}
public void Render(float time)
{
try
{
device.Clear(ClearFlags.Target, Color.Blue, 1.0f, 0);
device.BeginScene();
device.SetTexture(0, texture);
device.VertexFormat = CustomVertex.TransformedTextured.Format;
device.DrawUserPrimitives(PrimitiveType.TriangleStrip, 2, vertex);
device.EndScene();
device.Present();
}
catch
{
MessageBox.Show("Render");
}
}
#region Zdarzenia
protected virtual void InvalidateDeviceObjects(object sender, EventArgs e)
{
}
protected virtual void RestoreDeviceObjects(object sender, EventArgs e)
{
texture.Dispose();
Initialize();
}
protected virtual void DeleteDeviceObjects(object sender, EventArgs e)
{
}
protected virtual void EnvironmentResizing(object sender, CancelEventArgs e)
{
}
#endregion
}
}
</span>
Mam nadzieję że ktoś to przeczyta, i nie będę musiał odpowiadać np. na pytania czy ustawiłem Tu i Tv :d
Szukałem już wszędzie - w msdn i wszelakich tutorialach, u google, wszędzie no. Podobny problem znalazłem tylko u jednej osoby (<a href="http://forum.gamedev.pl/index.php?topic=11286.0">http://forum.gamedev.pl/index.php?topic=11286.0</a>), ale tam też nikt nie podał rozwiązania
Aha, jeszcze tylko 2 uwagi:
1 - ściągnąłem też cały plik dołączony do kursu -> też nie działa i
2 - testowałem na komputerze brata -> (oczywiście) też nie działa. To już 2 komputery.
EDIT: Napisałem że znalazłem tylko jeden taki problem - mówiłem o stronach w jęz. polskim bo w angielskim nie wiedziałem jak wpisać "jednolita" albo coś w tym rodzaju.