ไม่ไม่มีวิธีการทำเช่นนั้นจริงๆ
การเรียกใช้เรขาคณิต shader ต้องการอินพุตดั้งเดิมและสร้างเอาต์พุตพื้นฐาน 0 หรือมากกว่า หากไม่มีอินพุตดั้งเดิมไม่มีวิธีที่จะเรียกใช้ shader ทางเรขาคณิตได้ แน่นอนว่าคุณสามารถยืดขีด จำกัด ของจำนวนเอาต์พุตพื้นฐานของรูปทรงเรขาคณิตสำหรับแต่ละอินพุตดั้งเดิมได้ (ไม่ทราบขีด จำกัด ที่ใช้ได้จริงในตอนนี้ควรอยู่ในลำดับอาจเป็นพัน) ดังนั้นคุณอาจจะสามารถสร้าง 1,024 สามเหลี่ยมสำหรับแต่ละจุด แต่คุณต้องมีบางวิทยาการการป้อนข้อมูล
สิ่งที่คุณไม่ต้องการแต่เป็นแนวคิดทางเรขาคณิตที่แท้จริง คุณไม่จำเป็นต้องแสดงจุด 3D ในตำแหน่งที่สมเหตุสมผล แต่ก็อาจมีดัชนีนามธรรมหรือพิกัดพื้นผิวหรือคุณลักษณะใด ๆ ก็ได้และไม่จำเป็นต้องเป็นตำแหน่ง 3D ที่มีความหมาย ไม่มีใครกำหนดคุณลักษณะของจุดสูงสุดของคุณได้ และคุณยังสามารถแสดงจุดโดยไม่ต้องมีคุณลักษณะ แต่คุณต้องทำให้บางวิทยาการเพื่อเรียก Shader เรขาคณิตที่พวกเขาแม้ว่าวิทยาการเหล่านั้นไม่ได้มีแอตทริบิวต์ที่เกิดขึ้นจริงใด ๆ (วิธีการที่คุณแล้วคำนวณเรขาคณิตส่งออกของคุณใน Shader เรขาคณิตเป็นคำถามที่แตกต่างกันแม้ว่า)
แต่สิ่งที่คุณทำจริง ๆ การแสดงจุดสำหรับแต่ละตารางเซลล์และสร้างลูกบาศก์เดินขบวนสำหรับเซลล์นั้นจากนั้นเป็นวิธีที่ตรงไปตรงมา แน่นอนว่าคุณลักษณะใดที่เซลล์นี้มีอยู่นั้นขึ้นอยู่กับคุณมันอาจเป็นตำแหน่ง 3D ซึ่งเป็นเท็กซัสลงในพื้นผิว 3 มิติไม่ว่าจะเป็นอะไรก็ตาม แต่สิ่งเหล่านั้นคือเซลล์กริดที่คุณแสดงผล พูดจริง ๆ แล้วคุณไม่ได้ "ทิ้ง" จุดเหล่านั้นแล้ว "แทนที่" พวกเขาด้วยรูปสามเหลี่ยมคุณเปลี่ยน "แต่ละจุด" เป็นรูปสามเหลี่ยม นั่นคือสิ่งที่ shader เรขาคณิตมีไว้สำหรับและไม่มีอะไร "แฮ็ค" หรือ "ไม่เหมาะสม" เกี่ยวกับมัน ไม่มีใครพูดว่า Shader เรขาคณิตที่มีการสร้างผลผลิตเดียวกันชนิดดั้งเดิมเช่นการป้อนข้อมูลจะเป็น "เหมาะสม"
สิ่งที่คุณสามารถทำได้เพื่อให้บรรลุถึงวิธีป้อนข้อมูลส่วนใหญ่ในการเรนเดอร์กริด voxel ของคุณ (และนี่อาจเป็นสิ่งที่คุณถามจริง ๆ ) คือการวาดจุดที่ไม่มีส่วน ซึ่งหมายความว่าคุณไม่จำเป็นต้องมีอาร์เรย์ของแอตทริบิวต์เลยเพียงแค่ปิดการใช้งานพวกมันทั้งหมดแล้วเรียกใช้ง่าย ๆglDrawArrays
ด้วยจำนวนเซลล์ที่คุณต้องการ จากนั้นในเวอร์เท็กซ์เชดเดอร์หรือเรขาคณิตเชดเดอร์คุณสามารถสร้างดัชนีกริดเซลล์ 3 มิติที่จำเป็นด้วยเวทมนตร์ดัชนีเล็กน้อยจาก ID จุดยอดอินพุท (เช่นgl_VertexID
ซึ่งเป็นข้อมูลเดียวที่คุณมี) จากนั้นคำนวณเรขาคณิตเดินขบวนของคุณจากการค้นหา พื้นผิวปริมาณ 3D (หรืออะไรก็ตามโครงสร้างข้อมูล)
ดังนั้นในการหวนกลับฉันควร relativate คำสั่งของฉันจากจุดเริ่มต้น: คุณไม่สามารถสร้างพื้นฐานโดยไม่ต้องป้อนข้อมูลใด ๆprimitivesแต่คุณสามารถสร้างได้โดยไม่ต้องป้อนข้อมูลใด ๆรูปทรงเรขาคณิต