ฉันจะบอกได้ว่าฉันใช้หน่วยความจำการ์ดหน่วยความจำเท่าใด


15

ฉันต้องการกำหนดโปรแกรมโดยทางรันไทม์ว่าโปรแกรมของฉันใช้หน่วยความจำการ์ดหน่วยความจำเท่าใด โดยเฉพาะฉันสงสัยเกี่ยวกับวิธีการทำบนเครื่อง Windows ที่ใช้ OpenGL แต่ฉันสนใจวิธีที่จะทำได้บนแพลตฟอร์มอื่นเช่นกัน

ฉันรู้ว่ามียูทิลิตี้ออกมีที่จะแสดงให้ฉันใช้หน่วยความจำในขณะที่โปรแกรมของฉันทำงาน แต่ฉันต้องการที่จะสามารถค้นหาข้อมูลจากรหัสของฉัน


PS ฉันตอบคำถามของคุณแล้ว แต่สิ่งนี้จะเหมาะกว่าสำหรับstackoverflow.comเนื่องจากเป็นเพียงคำถามทั่วไปของโปรแกรม หากคำตอบของฉันไม่ละเอียดพอคุณยินดีที่จะโพสต์ใหม่ที่นั่นและดูว่ามีคำตอบใดให้บ้าง
Ricket

ฉันยังอยู่ใน stackoverflow ด้วย แต่ฉันยังคงได้เรียนรู้การผสมผสานของคำถามที่ใช้ได้สำหรับที่นี่
Hitesh

3
คำถามนี้ดูเหมือนดีอย่างสมบูรณ์ที่นี่ ท้ายที่สุดเขาอาจได้รับผู้ที่เขาต้องการ ดูสิ่งนี้: meta.gamedev.stackexchange.com/questions/3/…
Tetrad

คำตอบ:


14

คุณสามารถค้นหาหน่วยความจำวิดีโอของการ์ด Nvidia ใช้นามสกุล NVX_gpu_memory_infoหรือการ์ด ATI ใช้ATI_meminfo นี่คือตัวอย่างรหัสที่ฉันพบซึ่งอาจช่วยให้คุณเริ่มต้นได้


อย่างไรก็ตาม Paul Nettle ที่ flipcode สงสัยว่าทำไมคนเราต้องการค้นหาหน่วยความจำวิดีโอที่มีอยู่พูดว่า :

เหตุผลที่ยาก (และบางครั้งเป็นไปไม่ได้) ในการกำหนดจำนวนหน่วยความจำวิดีโอคล้ายกับเหตุผลที่ OpenGL ไม่ยอมให้คุณล็อคเฟรมบัฟเฟอร์และเข้าถึงโดยตรง

และจะอธิบายต่อไปโดยพื้นฐานแล้วว่า"จำนวนหน่วยความจำวิดีโอ" อาจไม่ได้มีความหมายอะไรเลย ฉันเห็นด้วยกับเหตุผลที่ตัวอย่างเช่นจำนวนหน่วยความจำ "ฟรี" ในเครื่อง Windows Vista / 7 นั้นไม่เกี่ยวข้อง หวังว่าจะไม่มีหน่วยความจำว่างเพราะหน่วยความจำฟรีจะสูญเสียความทรงจำ แต่มีหน่วยความจำบางส่วนที่อุทิศให้กับแคชที่ Windows ล้างข้อมูลอยู่เสมอหากแอปพลิเคชันต้องการ


ทรัพยากรที่ดีบางอย่าง ฉันควรได้รับโอกาสลองดูในสองสามวัน
Hitesh

+1 ตัวอย่างดีมาก อย่างไรก็ตามฉันไม่เห็นด้วยอย่างเต็มที่เกี่ยวกับการไม่มีความหมายอะไรเลยมันเป็นการดีกว่าที่จะตรวจสอบจำนวนหน่วยความจำมากกว่าการปล่อยให้โปรแกรม spectaculary ของคุณล้มเหลว
Kornel Kisielewicz

แต่ฉันคิดว่าประเด็นนั้นไม่จำเป็นว่าคุณไม่ควรตรวจสอบจำนวนหน่วยความจำ แต่ปริมาณหน่วยความจำนั้นไม่ได้เป็นตัวบ่งชี้ที่ชัดเจนของสิ่งใด เมื่อการ์ดหน่วยความจำไม่เพียงพออาจหมายความว่ามันจะล้มเหลวหรืออาจหมายถึงข้อมูลพื้นผิวของคุณจะถูกสลับเข้าและออกโดยอัตโนมัติตามความจำเป็น 0 หน่วยความจำอาจไม่ได้หมายถึงข้อผิดพลาดออกจากหน่วยความจำร้ายแรง
Ricket

1
โดยส่วนตัวฉันวางแผนที่จะใช้สิ่งนี้เป็นแนวทางง่ายๆในการติดตามรอยรั่วและดูความเข้ากันได้ของฮาร์ดแวร์ของฉัน ใช้ "20mb" หรือไม่ ใช่ว่าอาจจะทำงานอะไรก็ได้ในตลาดวันนี้ ใช้ "500mb" ในเกมง่ายๆที่มีพื้นผิวที่จัดสรรแบบไดนามิกครึ่งโหลพร้อมกับปั่นป่วนมากมาย? อ๊ะมีบางอย่างผิดปกติไปกับการเก็บขยะของฉัน
ZorbaTHut

1
น่าเสียดายที่ข้อมูลจำเพาะของ GL บอกว่าเมื่อคนขับคืน GL_OUT_OF_MEMORY ตอนนี้มันจะไม่แน่ชัดดังนั้นเมื่อคุณออกจากหน่วยความจำคุณจะเป็นพื้น SOL สำหรับเกมที่ไม่เลว แต่สำหรับแอพเช่น Photoshop ที่ยอมรับไม่ได้
gman
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.