การซิงโครไนซ์การเรียกใช้ OpenGL Compute Shader อย่างต่อเนื่อง
ฉันมีตัวประมวลผลสองตัวที่ต้องดำเนินการในลำดับที่แน่นอนและเอาต์พุตที่ขึ้นอยู่กับอินพุตก่อนหน้า เป็นการดีที่ฉันจะไม่ต้องคัดลอกบัฟเฟอร์ฝั่งไคลเอ็นต์และทำงานทั้งหมดของฉันบน GPU พิจารณาฉันมีสองเฉดสีประมวลรวบรวมและเชื่อมโยงเป็นและprogram_one program_twoสมมติว่าฉันยังมีGL_SHADER_STORAGE_BUFFERที่มีข้อมูลที่ถูกเขียนไปโดยและอ่านโดยprogram_one program_twoฉันสามารถทำสิ่งต่อไปนี้ได้ไหม: glUseProgram(program_one); glBindBuffer(GL_SHADER_STORAGE_BUFFER, buffer); glBindBufferBase(GL_SHADER_STORAGE_BUFFER, index, buffer); glDispatchCompute(16, 16, 1); glUseProgram(program_two); glBindBuffer(GL_SHADER_STORAGE_BUFFER, buffer); glBindBufferBase(GL_SHADER_STORAGE_BUFFER, index, buffer); glDispatchCompute(16, 16, 1); มันรับประกันได้หรือไม่ว่าการร้องขอทั้งหมดของ shader การคำนวณแรกจะเสร็จสิ้นก่อนที่จะมีการร้องขอที่สอง (เพื่อหลีกเลี่ยงการแย่งข้อมูลระหว่างการอ่านและการเขียนbuffer)? ถ้าไม่ฉันจะซิงโครไนซ์มันได้อย่างไร?