Ich möchte den Inhalt eines sehr großen Speicherblocks in einen ausreichend großen GPU-Puffer übertragen und dann sofort den Inhalt des Speichers auf der CPU ändern. So etwas wie dies in Pseudo-Code:Wann gibt glBufferSubData zurück?
glBindBuffer(/*very_large_buffer*/);
glBufferSubData(/*very_large_memory_chunk*/);
memset(/*zeros*/, /*very_large_memory_chunk*/);
In diesem Code Was bedeutet glBufferSubData
eigentlich? Überträgt es very_large_memory_chunk irgendwo vor der Rückkehr oder plant nur die Übertragung für eine möglicherweise spätere Ausführung? Wenn ich den CPU-Puffer sofort ändere, ist es dann möglich, dass teilweise geänderter Speicher übertragen wird, was zu einem Müll in GPUs very_large_buffer führt?
Beachten Sie, dass ich nicht zum Rendern von Aufrufen frage. Ich weiß, dass, wenn der Puffer zum Rendern verwendet wird, Übertragungsoperationen warten, bis das Rendern abgeschlossen ist und umgekehrt. Ich möchte wissen, ob sich OpenGL bei CPU-zu-GPU-Transferoperationen ähnlich verhält.