![]() |
Wie kann man Grafikspeicher reservieren und damit arbeiten ?
Hi,
wenn ich normalen Arbeitsspeicher reservieren möchte, um etwa Daten hineinzuschreiben, kann ich die Klasse TMemoryStream verwenden:
Delphi-Quellcode:
Wie funktioniert das mit Grafikspeicher ? Hierfür existiert keine Stream-Klasse, so dass anscheinend andere Funktionen zum Einsaz kommen sollen.
var MemoryStream : TStream;
begin MemoryStream:=TMemoryStream.Create; ... MemoryStream.WriteBuffer(const Buffer; Count: Longint); ... MemoryStream.ReadBuffer(var Buffer; Count: Longint); ... MemoryStream.Free; end; |
Re: Wie kann man Grafikspeicher reservieren und damit arbeit
Was meinst du mit Grafikspeicher? Willst du direkt Speicher der Grafikkarte reservieren oder wie darf man das verstehen? Und wenn ja, warum willst du dies tun?
|
Re: Wie kann man Grafikspeicher reservieren und damit arbeit
Zitat:
|
Re: Wie kann man Grafikspeicher reservieren und damit arbeit
den einzigen zugriff den ich auf den Grake speicher kenne, ist via OpenGL
aber ob das das ist was du willst ... Mit GlGenTextures kannst de das glaubig machen. |
Re: Wie kann man Grafikspeicher reservieren und damit arbeit
Direkten Zugriff wirst du unter NT Systemen nicht bekommen können. Du wirst mit irgend einer Graphik API hantieren müssen, sei es OGL oder DirectX, sein es Texturen, Shader oder wie auch immer. Aber einfach mal ein FillChar() in den Video RAM ist nicht möglich. Mein Wissen um diese APIs ist aber leider zu begrenzt um eine sinnvolle Strategie zum Benchmarken vorzuschlagen.
|
Re: Wie kann man Grafikspeicher reservieren und damit arbeit
Ich muss dieses Thema nochmal aufgreifen, und zwar suche ich nach einer Möglichkeit, freien Grafikspeicher mittels DirectX zu reservieren und anschließend wieder freizugeben.
Kann mir da jemand eine DirectX-Funktion nennen, die man hierfür benutzen kann ? |
Re: Wie kann man Grafikspeicher reservieren und damit arbeit
Wenn Du das mit DirectDraw machst, kannst Du zB. ein Surface erstellen und dann zB. mit SurfaceFillRect den Speicher beschreiben.
Dabei ist aber zu achten, den HAL (Hardware Accerleration Layer) und nicht den HEL (Hardware Emulation Layer) zu verwenden und das Surface im Grafikspeicher, nicht im Systemspeicher zu erstellen. Mit DirectDraw kann man direkt in den Speicher schreiben, genau weiß ichs nimmer, das hab ih damls mit DirectX 3 gemacht und noch dazu in C++. - Surfaces gibts IMHO in DirectX 10 nimmer |
Re: Wie kann man Grafikspeicher reservieren und damit arbeit
Ich denke, dass es schwer ist, heutzutage direkt auf den Grafikspeicher zuzugreifen. Du kannst dir nie wirklich sicher sein, ob deine Daten wirklich in der Grafikkarte oder im Hauptspeicher liegen.
Eine Möglichkeit wäre einfach n Texturen einer bestimmten Größe zu reservieren. Dabei auf keinen Fall den "Managed" Modus verwenden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz