Preconcepts
ตกลงดังนั้นสิ่งที่ฉันรวบรวมมาคือ:
- อย่าใช้ไปป์ไลน์ที่คงที่ (เลิกใช้แล้วหรือกำลังจะเลิกใช้งาน)
- vbos เก็บ "โมเดลวัตถุ" (n จุดสุดยอดข้อมูลส่วนใหญ่)
- vaos อธิบายว่าข้อมูลถูกวางไว้อย่างไรเพื่อให้การโทรรู้ว่าส่วนใดของ vbo แต่ละชนิดสำหรับข้อมูลจุดยอด (หนึ่ง vao สามารถอ้างถึง vbos หลาย ๆ ตัวได้ตรงกันข้ามเป็นเรื่องยาก)
- การเรียกแบบดึงแต่ละครั้งจะส่งข้อมูลจุดสุดยอดไปยังตัวแปลงข้อมูล
ฉันเห็น 3D (ไม่บังคับ)
จากข้อมูลเหล่านี้ฉันเห็นได้ว่าการวาดวัตถุที่ซับซ้อน 3D เป็นสิ่งที่ดีมาก ๆ ด้วย OpenGL ที่ทันสมัย โดยทั่วไปคุณจะโหลดโมเดลวัตถุ (อาจมาจาก Blender หรือซอฟต์แวร์ที่คล้ายคลึงกันอื่น ๆ ) ลงใน VBOs ที่มีพิกัดโลคัลและจากนั้นคุณเพียงแค่จัดหาพารามิเตอร์ shader ที่แตกต่างกัน (ออฟเซ็ต) ให้แต่ละอินสแตนซ์ของวัตถุ
ปัญหา / คำถาม
ในปัญหา 2D และลำดับความสำคัญแตกต่างกันอย่างสิ้นเชิงแม้ว่า คุณไม่ได้วาดวัตถุที่ซับซ้อนมากคุณไม่จำเป็นต้องใช้เมทริกซ์การฉายที่ซับซ้อน
อะไรจะเป็นวิธีที่ดีที่สุดในการวาดบ่อย ๆ (จริงๆแล้วโดยทั่วไปในทุกๆเฟรม) การเปลี่ยนรูปทรงเรขาคณิตด้วย OpenGL สมัยใหม่
ในย่อหน้าต่อไปนี้คุณสามารถเห็นแนวคิดของปัญหา (ปัญหาวงกลมและสี่เหลี่ยม) ที่ระบุการเปลี่ยนแปลงที่ฉันสนใจได้ดียิ่งขึ้น
ความพยายามของฉัน (ไม่จำเป็น)
ดังนั้นฉันเริ่มคิดว่าฉันจะจัดการกับการวาดรูปทรงเรขาคณิต 2D พื้นฐานบนหน้าจอได้อย่างไร:
- สแควร์: โหลด
[(1, 0), (1, 1), (0, 1), (0, 0)]
VBO สำหรับรูปทรงเรขาคณิตของสแควร์ในพื้นที่ท้องถิ่นจากนั้นให้ความกว้างที่แท้จริงของสแควร์และพิกัดโลกและข้อมูลสี
เย็นดูง่าย ลองย้ายไปที่แวดวง:
- วงกลม: พัดลมสามเหลี่ยมพร้อม ... เอ๊ะ ความแม่นยำเท่าไหร่ (จำนวนจุดยอด)? สำหรับวงกลมขนาดเล็กที่มีความแม่นยำต้องมีขนาดเล็กและสำหรับวงกลมที่มีความแม่นยำจะต้องสูง การโหลดอย่างชัดเจน 1 VBO อาจไม่เหมาะกับทุกกรณี ถ้าฉันต้องการเพิ่มความแม่นยำเพราะวงกลมถูกปรับขนาดให้ใหญ่ขึ้น
เท่ห์กว่าเดิม ให้ย้ายไปยังบางสิ่งที่ง่ายขึ้นเล็กน้อยสี่เหลี่ยมผืนผ้า
- สี่เหลี่ยมผืนผ้า: เอ๊ะ ไม่มี "เรขาคณิตรูปสี่เหลี่ยมผืนผ้าทั่วไป" คุณมีสัดส่วนความกว้าง / ความสูงและนั่นก็ แต่สี่เหลี่ยมผืนผ้าแต่ละอันอาจแตกต่างกันไปหากขนาดมีการเปลี่ยนแปลง
อย่างที่คุณเห็นสิ่งต่าง ๆ ตกต่ำจากที่นั่น โดยเฉพาะกับรูปหลายเหลี่ยมที่ซับซ้อนและอะไรก็ตาม
ไม่มีนโยบายรหัส: P
ฉันต้องการภาพรวมของแนวคิดไม่จำเป็นต้องใช้รหัสโดยเฉพาะอย่างยิ่งรหัส C หรือ C ++ เพียงแค่พูดสิ่งที่ชอบ: "ทำ VBO ด้วยข้อมูลจุดสุดยอดนี้แล้วผูกมัน ... "