ฉันเพิ่งพยายามเขียนโค้ด GLSL shader และโชคไม่ดีนักเมื่อ shader ไม่ได้วาดสิ่งที่ฉันคาดหวังไว้ (โดยพื้นฐานแล้วทุกอย่างจะเป็นสีดำบนหน้าจอ) นี่คือเครื่องมือที่ฉันลองใช้:
การรวม Nvidia NSight VS - มันหยุดทำงานทันทีเมื่อฉันเริ่มแอปพลิเคชัน ลองใช้แอปพลิเคชันอื่นคู่กันแม้จะวาดรูปสามเหลี่ยมธรรมดาและยังไม่มีโชค ค้นหาผ่านอินเทอร์เน็ตและฟอรัม Nvidia และดูเหมือนว่าจะเป็นปัญหาทั่วไป และดูเหมือนว่าจะไม่พบวิธีแก้ไขใด ๆ
glslDevil - มันสามารถเริ่มแอปพลิเคชันได้ แต่จากนั้นโปรแกรมก็จะออกต่อไปก่อนที่จะทำการเรนเดอร์ใด ๆ GL Trace คือ
wglMakeCurrent(0, 0) wglDeleteContext(00010000) ChildProcess exited
รับข้อขัดข้องอีกครั้งเมื่อเรียกใช้แอปพลิเคชันอื่นเมื่อหลังจากเรียก glDeleteTexture (1, 0314EF74) ออกจากกระบวนการลูกแล้ว
ฉันไม่รู้ว่าเกิดอะไรขึ้น
AMD PerfStudio 2 - ดูเหมือนว่าจะเป็นเครื่องมือที่มีแนวโน้มมากที่สุด เรียกใช้แอปพลิเคชันของฉันได้สำเร็จและแสดงข้อมูลที่จำเป็น อย่างไรก็ตาม ดูเหมือนว่าจะไม่รองรับการดีบัก GLSL ฉันไม่สามารถผ่านเชเดอร์และดูตัวแปรในเครื่องได้ ฯลฯ ดูเหมือนว่ารองรับเฉพาะ DirextX shader เท่านั้น
gDebugger - มันใช้งานได้ค่อนข้างดีเครื่องมือคล้ายกับ AMD PerfStudio แต่อีกครั้งไม่ใช่ดีบักเกอร์ ไม่สามารถผ่านโค้ดเชเดอร์และดูตัวแปรในเครื่องได้
พิมพ์ฟ - ?? มีคนอยู่ใน stack overflow บอกว่าใช้ printf ฉันจะ printf() ใน shader ได้อย่างไร
แปลง DirectX shader เป็น GLSL - เนื่องจาก DirectX shader มีเครื่องมือแก้ไขจุดบกพร่องที่ดีกว่า และมีเครื่องมือเช่น http://sourceforge.net/projects/hlsl2glsl/ เพื่อแปลง hlsl เป็น glsl โดยอัตโนมัติ ดูเหมือนว่าจะเป็นทางเลือกอื่น โดยส่วนตัวแล้วฉันไม่ชอบวิธีแก้ปัญหานี้ และหวังว่าจะมีทางเลือกอื่นจริงๆ
ใครช่วยแนะนำวิธีแก้ไขข้อบกพร่อง GLSL ของคุณได้บ้าง คุณใช้เครื่องมืออะไรสำเร็จ?
ฉันกำลังดำเนินการอยู่:
- NVidia GFX 460v2
- วิชวลสตูดิโอ 2008 และ 2010
- เกลว
- โอเพ่นจีแอล 2.0
ARB_debug_output
? - person genpfault   schedule 24.05.2014