ich habe es jetzt geschafft, ein 2D-Bild zu zeichnen, aber maxPrimitiveCount ist zu wenig, d.h. ich kann nur 65000 Points zeichnen.
Delphi-Quellcode:
// Lock the Vertex Buffer to get the pointer
hRes := D3DVertexBuffer.Lock(0, dataSize, pBuffer,
D3DLOCK_DISCARD or D3DLOCK_NOSYSLOCK);
if (FAILED(hRes)) then
begin
result := E_FAIL;
exit;
end;
// fill the buffer with the vertices
copyMemory(pBuffer, @pixelList[0], dataSize);
// Unlock the buffer
if (FAILED(D3DVertexBuffer.Unlock())) then
begin
result := E_FAIL;
exit;
end;
for i := 0 to high(pixelList) do
begin
pixelList[i].x := i mod SCREEN_WIDTH;
pixelList[i].y := i div SCREEN_WIDTH;
pixelList[i].z := 0.5;
pixelList[i].rhw := 1.0;
pixelList[i].color := data[i];
end;
//[...]
D3DDevice.SetStreamSource(0, D3DVertexBuffer, sizeof(TPixel));
D3DDevice.SetVertexShader( POINT_FLAGS );
D3DDevice.DrawPrimitive(D3DPT_POINTLIST, 0, len); // wenn len>65000, dann zeichnet er nur noch schwarz ab der Stelle
Wie ist es möglich, mit einer älteren GraKa z.B. eine 400x250 Zeichenoberfläche pixelgenau zu zeichnen?