Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

25.10.2016, 08:03

Also es würde mich schon stark wundern, wenn die Grafikkarte keine Vertizes unterstützen würde... Das wäre in etwa so sinnvoll wie ein Auto ohne Räder. D3DCREATE_HARDWARE_VERTEXPROCESSING ist schon korrekt.

Schonmal was von Intel GPU gehört... ;)

Auch da gibt es das seit 10 Jahren...
Cube Universe
Entdecke fremde Welten auf deiner epischen Reise durchs Universum.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

12

25.10.2016, 10:44

Also es würde mich schon stark wundern, wenn die Grafikkarte keine Vertizes unterstützen würde... Das wäre in etwa so sinnvoll wie ein Auto ohne Räder. D3DCREATE_HARDWARE_VERTEXPROCESSING ist schon korrekt.

Schonmal was von Intel GPU gehört... ;)

Auch da gibt es das seit 10 Jahren...

Der Punkt ist: Die Tatsache, dass das, was vor nicht allzu langen Zeiten die am weitesten verbreitete Grafikhardware war, eben kein hardware Vertexprocessing supported, lässt wohl vermuten, dass es offenbar doch nicht ganz so sinnlos ist, wie du da oben darzustellen versuchst... ;)

Anyways, ich würde an dieser Stelle mal die Frage an den OP stellen: Was genau hast du für eine Grafikkarte und hast auch einen passenden Driver dafür installiert?

LukasBanana

Alter Hase

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

13

25.10.2016, 11:27

Kannst dir ja mal anschauen, wie ich das in meiner alten Engine gemacht hatte:
Weiter unten bei der Funktion Direct3D9RenderContext::createRenderContext

Ansonsten fällt mir so auf die Schnelle an Unterschieden nur auf, dass bei meinem Code "D3DSWAPEFFECT_COPY" oder "D3DSWAPEFFECT_FLIP" genutzt wird und bei dir "D3DSWAPEFFECT_DISCARD",
sowie ein "BackBufferCount" von 1 anstatt 2 wie bei dir.

Gruß,
Lukas

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

14

25.10.2016, 22:32

Also mein moderner halbwegs moderner Intelchip (HD Graphics 2500 oder so) hatte auch keine Hardwarebeschleunigung für Vertexprocessing. Daher muss man halt die verschiedenen Device-Erstellungen durchprobieren (von PureDevice runter bis software-reference), bis das HRESULT in Ordnung liefert.

Daher solltest du es wie Lukas beschreibt schon machen ;)

15

28.10.2016, 21:19

Die integrierten Grafikchips sind aber auch nicht für Spiele gedacht. Und ohne Hardware Vertex Processing läuft da wohl auch kein halbwegs aktuelles Spiel flüssig. Für 2D-Jump'n'Runs sollte es allerdings reichen.

Funktioniert es denn mit Software Vertex Processing?
Cube Universe
Entdecke fremde Welten auf deiner epischen Reise durchs Universum.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

16

29.10.2016, 07:59

Es geht ja nicht darum, dass die Hardware keine Vertices kann. Das kann im Grunde jede 3D-Hardware seit 1998. Aber Vertex-Processing muss sie deswegen ja nicht können. Meine ATI Radeon Mobility 4650 kann z.B. auch weder Tesselation, noch Geometry Shader in Hardware. Trotzdem kann ich damit mehr zocken als nur 2D Spiele.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (29.10.2016, 08:30)


RolandK

Frischling

Beiträge: 6

Wohnort: Weiden i. d. Opf.

Beruf: Softwareentwickler

  • Private Nachricht senden

17

31.10.2016, 06:31

Schon komisch.
Folgender Code läuft bei mir und vielen Kunden sauber durch. Auch mit Intel-GPUs hatte ich da noch nie Probleme.
(Achtung, Beispiel ist in C#)

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//Prepare device creation
D3D9.CreateFlags createFlags =
    D3D9.CreateFlags.HardwareVertexProcessing |
    D3D9.CreateFlags.PureDevice |
    D3D9.CreateFlags.FpuPreserve |
    D3D9.CreateFlags.Multithreaded;
D3D9.PresentParameters presentparams = new D3D9.PresentParameters();
presentparams.Windowed = true;
presentparams.SwapEffect = D3D9.SwapEffect.Discard;
presentparams.DeviceWindowHandle = GetDesktopWindow();
presentparams.PresentationInterval = D3D9.PresentInterval.Default;
presentparams.BackBufferCount = 1;

// Try to find the Direct3D9 adapter that maches given DXGI adapter
m_adapterIndex = -1;
m_direct3DEx = new D3D9.Direct3DEx();
for (int loop = 0; loop < m_direct3DEx.AdapterCount; loop++)
{
    var d3d9AdapterInfo = m_direct3DEx.GetAdapterIdentifier(loop);
    if (d3d9AdapterInfo.DeviceId == m_dxgiAdapter.Description1.DeviceId)
    {
        m_adapterIndex = loop;
        break;
    }
}

// Try to create the device
m_deviceEx = new D3D9.DeviceEx(m_direct3DEx, m_adapterIndex, D3D9.DeviceType.Hardware, IntPtr.Zero, createFlags, presentparams);
www.rolandk.de/wp/ Mein Blog
GitHub/FrozenSky Multimedia Framework für .Net/C# (3D-Rendering, 2D-Rendering, etc.)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

18

31.10.2016, 10:29

Nun, die neueren iGPUs supporten vermutlich auch hardware Vertexprocessing (sind ja komplett eigenständige GPUs). Die älteren GMAs aber garantiert nicht, genau darum durfte ich schon weiß nicht wie oft wo den software Vertexprocessing Retry einbauen, weil es sonst bei der halben Kundschaft nicht laufen würde... ;)

Werbeanzeige