คำถามติดแท็ก opengl

OpenGL เป็นมาตรฐานกราฟิกและ API ซึ่งกำหนดเป้าหมายไปยังตลาดเดสก์ท็อปและเวิร์กสเตชัน มันถูกออกแบบมาให้ง่ายต่อการเร่งความเร็วด้วยฮาร์ดแวร์คอมพิวเตอร์เฉพาะและการใช้งานส่วนใหญ่จึงให้ประสิทธิภาพที่ดีขึ้นอย่างมากเมื่อเทียบกับการแสดงผลซอฟต์แวร์แบบดั้งเดิม ปัจจุบัน OpenGL ใช้สำหรับแอพพลิเคชั่นเช่นซอฟต์แวร์ CAD และเกมคอมพิวเตอร์ นอกจากนี้ยังเป็นแพลตฟอร์มข้าม มาตรฐาน OpenGL ควบคุมโดยกลุ่ม Khronos ซึ่งควบคุม OpenGL ES ด้วย

3
วิธีซ่อนโครงร่างหลังการประมวลผลเมื่อ / ตำแหน่งที่ซ่อนตาข่าย
ฉันกำลังทำงานเกี่ยวกับการตั้งค่าเค้าร่างที่ใช้งานอยู่ในเอนจิ้น 3 มิติของฉันเอฟเฟกต์ไฮไลท์สำหรับตัวละคร 3 มิติที่เลือกหรือฉากในหน้าจอ หลังจากทำงานกับ stencil buffer และรับผลลัพธ์ที่น่าพอใจ (ปัญหาเกี่ยวกับรูปร่างเว้าความหนาของร่างเนื่องจากระยะห่างจากกล้องและความไม่สอดคล้องระหว่างเดสก์ท็อปและแล็ปท็อปของฉัน) ฉันเปลี่ยนไปใช้การตรวจจับขอบและการสุ่มเฟรมบัฟเฟอร์ ค่อนข้างพอใจกับ อย่างไรก็ตามฉันไม่สามารถซ่อนเค้าร่างเมื่อตาข่ายที่เลือกอยู่ด้านหลังตาข่ายอื่น สิ่งนี้สมเหตุสมผลสำหรับกระบวนการของฉันเนื่องจากฉันเพียงแค่สร้างโครงร่าง 2 มิติจากเฟรมบัฟเฟอร์หลังจากเรนเดอร์ส่วนที่เหลือของฉาก การจับภาพหน้าจอสองรายการของฉันอยู่ด้านล่าง ที่แรกก็คือเค้าร่าง "ดี" ที่สองคือที่เห็นร่างอยู่เหนือตาข่ายที่บล็อกแหล่งที่มาเค้าร่าง กระบวนการเรนเดอร์ทำงานดังนี้: 1) วาดเฉพาะอัลฟาของตาข่ายที่ไฮไลต์เพื่อบันทึกภาพเงาดำในบัฟเฟอร์เฟรม (framebuffer1) 2) ส่ง texture จาก framebuffer1 ไปยัง shader ตัวที่สองซึ่งทำการตรวจจับขอบ จับขอบใน framebuffer2 3) แสดงฉากทั้งหมด 4) แสดงพื้นผิวจาก framebuffer2 ที่ด้านบนของฉาก ฉันมีแนวคิดเล็กน้อยเกี่ยวกับวิธีการทำให้สำเร็จและหวังว่าจะได้รับคำติชมเกี่ยวกับความถูกต้องของพวกเขาหรือวิธีการที่ง่ายกว่าหรือดีกว่า ก่อนอื่นฉันคิดว่าจะทำให้ฉากทั้งหมดเป็นบัฟเฟอร์เฟรมและเก็บเงาที่มองเห็นได้ของตาข่ายที่ถูกไฮไลต์ในช่องอัลฟา (สีขาวทั้งหมดจะบันทึกที่ที่ตาข่ายที่ไฮไลต์มองเห็น) จากนั้นฉันจะทำการตรวจจับขอบบนช่องอัลฟาทำการเรนเดอร์เฟรมบัฟเฟอร์ฉากแล้วทำการเรนเดอร์ขอบด้านบน ส่งผลให้บางสิ่งเช่นนี้: เพื่อให้บรรลุผลนี้ฉันคิดว่าการตั้งค่ากำหนดเฉพาะในระหว่างการส่งเรนเดอร์ของวัตถุที่ไฮไลต์ที่จะวาดสีดำทั้งหมดในอัลฟาสำหรับพิกเซลที่มองเห็นได้ แนวคิดที่สองของฉันคือการใช้กระบวนการเรนเดอร์ปัจจุบันตามที่ระบุไว้ข้างต้น แต่ยังเก็บพิกัด X, Y …

1
ใช้ประโยชน์จากการมัลติเธรดระหว่างเกมลูปและ openGL
การพูดคุยในบริบทของเกมโดยใช้ openGL renderer: สมมติว่ามีสองหัวข้อ: อัพเดทตรรกะของเกมและฟิสิกส์เป็นต้นสำหรับในเกมวัตถุ ทำให้ openGL ดึงสายสำหรับแต่ละวัตถุในเกมตามข้อมูลในวัตถุในเกม (เธรด 1 นั้นทำการปรับปรุงอยู่เสมอ) ยกเว้นว่าคุณมีสองสำเนาของวัตถุแต่ละเกมในสถานะปัจจุบันของเกมคุณจะต้องหยุดเธรด 1 ในขณะที่เธรด 2 ทำการเรียกการดึงมิฉะนั้นวัตถุในเกมจะได้รับการอัปเดตในช่วงกลางของการดึงการดึงสำหรับวัตถุนั้น ไม่พึงประสงค์! แต่การหยุดเธรด 1 เพื่อโทรออกอย่างปลอดภัยจากเธรด 2 ฆ่าวัตถุประสงค์ทั้งหมดของการทำงานหลายเธรด / การทำงานพร้อมกัน มีวิธีการที่ดีกว่านี้กว่าการใช้หลายร้อยหรือหลายพันหรือซิงค์วัตถุ / รั้วเพื่อให้สถาปัตยกรรมแบบมัลติคอร์สามารถใช้ประโยชน์จากประสิทธิภาพการทำงานหรือไม่ ฉันรู้ว่าฉันยังสามารถใช้มัลติเธรดสำหรับการโหลดพื้นผิวและการรวบรวมเฉดสีสำหรับวัตถุที่ยังไม่ได้เป็นส่วนหนึ่งของสถานะเกมปัจจุบัน แต่ฉันจะทำอย่างไรกับวัตถุที่ใช้งาน / มองเห็นได้โดยไม่ทำให้เกิดความขัดแย้งกับการดึงและอัปเดต จะเกิดอะไรขึ้นถ้าฉันใช้การล็อกการซิงค์แยกกันในแต่ละวัตถุของเกม วิธีนี้เธรดใด ๆ จะบล็อกเฉพาะวัตถุหนึ่งรายการ (กรณีที่เหมาะสมที่สุด) แทนที่จะเป็นทั้งรอบการอัพเดท / วาด แต่การล็อกแต่ละวัตถุมีค่าใช้จ่ายเท่าใด (เกมอาจมีวัตถุนับพันรายการ)

1
เหตุใดจึงสำคัญที่ต้องแสดงเป้าหมายด้วยขนาดบิตเดียวกัน
ฉันกำลังคิดว่า GBuffer ประเภทใดที่ฉันจะต้องใช้สำหรับการแรเงาที่เลื่อนออกไปดังนั้นฉันจึงพยายามจัดทำเอกสารออนไลน์ด้วยตนเองเกี่ยวกับสิ่งที่พบบ่อยที่สุดและรูปแบบของพวกเขา GBuffer ส่วนใหญ่ที่ฉันเคยเห็นใช้ขนาดบิตเดียวกันสำหรับแต่ละเป้าหมายการแสดงผลซึ่งนำไปสู่ช่องที่ไม่ได้ใช้ อย่างไรก็ตามในการเดาแรกสำหรับ GBuffer ของฉันบนกระดาษฉันต้องการสองเป้าหมาย 24 บิตและสอง 32 คนหรือสาม 24 และหนึ่ง 32 ฉันเข้าใจว่าการมีขนาด "สิ่งที่แนบ" เหมือนกันสามารถจัดแนวได้ดีกว่า แต่ในทางปฏิบัติแล้วมันจะดีกว่าถ้าจะเสียช่องสัญญาณ (หรือสำรองไว้เพื่อใช้ในอนาคต) และมี RTs ขนาดเท่ากันหรือควรใช้สิ่งที่ต้องการ ในกรณีก่อนหน้านี้ทำไมมันถึงได้เปรียบเช่นนั้นบิต 24 บิตจะถูกเพิ่มเป็น 32 หรือไม่?

2
ฉันควรใช้โปรแกรม OpenGL จำนวนเท่าใดเพื่อแสดงวัตถุหลายรายการ
ฉากของฉันมีวัตถุหลายอย่างในนั้น (สมมติว่า 3 ลูกบาศก์ 1 กระบอก 8 ทรงกลม) ฉันคิดว่าฉันควรสร้างจุดสุดยอดสำหรับแต่ละจุด ฉันควรมีกี่โปรแกรม ทางเลือก: หนึ่งโปรแกรมต่อวัตถุ โปรแกรมหนึ่งสำหรับลูกบาศก์ทั้งหมดและอีกอันสำหรับทรงกลมทั้งหมด (สมมติว่าพวกเขาใช้เฉดสีเดียวกัน) หนึ่งโปรแกรมขนาดใหญ่สำหรับทุกสิ่ง แนวทางที่ถูกต้องคืออะไร?

1
ใน OpenGL การเรนเดอร์“ zero state” คืออะไร?
เมื่อเร็ว ๆ นี้ในการสัมภาษณ์งานฉันได้กล่าวว่าฉันสอนตัวเอง OpenGL ที่ทันสมัยและแสดงผลด้วยวัตถุบัฟเฟอร์จุดสุดยอดเพราะมหาวิทยาลัยของฉันสอนเฉพาะฟังก์ชั่นไปป์ไลน์ที่มีการแสดงโหมดทันทีในเวลานั้น ผู้สัมภาษณ์ขัดจังหวะฉันสั้น ๆ เพื่อบอกว่า VBOs ถูกแทนที่อย่างมีประสิทธิภาพด้วยสิ่งที่เรียกว่า "การปรับค่าสถานะเป็นศูนย์" แล้วให้ฉันดำเนินการต่อ ฉันลืมถามในภายหลังเกี่ยวกับสิ่งที่ตั้งใจทำเพราะเราย้ายไปเรียนวิชาอื่นอย่างรวดเร็วและผู้สัมภาษณ์หมดเวลาในตอนท้ายเนื่องจากตารางงานที่ยุ่ง หลังจากนั้นฉันค้นหาทางออนไลน์เพื่อหา "สถานะ OpenGL เป็นศูนย์" และ "แสดงสถานะเป็นศูนย์" โดยไม่มีผลลัพธ์ที่เกี่ยวข้องซึ่งส่วนใหญ่เป็นเพียงเรื่องเกี่ยวกับสถานะ OpenGL องค์กรที่มีปัญหาเป็นงานวิจัยที่หนักมากดังนั้นจึงมีโอกาสที่จะเป็นส่วนเสริมที่มีการสนับสนุนเพียงเล็กน้อยในปัจจุบันหรือว่าคำศัพท์ที่ใช้แตกต่างกันไป

1
วิธีการเรนเดอร์ภูมิประเทศขนาดใหญ่อย่างมีประสิทธิภาพได้อย่างไร
เมื่อเร็ว ๆ นี้ฉันติดปัญหาที่คิดเกี่ยวกับวิธีที่ดีที่สุดในการสร้างภูมิประเทศในเกมของฉัน ในโครงการอื่นฉันมักใช้ความสูงของแผนที่ดังนั้นงานหลักทั้งหมดจึงขึ้นอยู่กับเครื่องยนต์ที่ใช้ แต่ตอนนี้ไม่สามารถทำได้เพราะภูมิประเทศมีรูปหลายเหลี่ยมหลายล้านที่ต้องวาดอย่างแม่นยำ นอกจากนี้หลายคนไม่สามารถแยกวิเคราะห์จากเวกเตอร์ Y (เนื่องจากรูปหลายเหลี่ยมที่ซ่อนอยู่ด้านล่าง) นั่นคือแผนผังความสูงไม่เป็นประโยชน์ที่นี่ ในกรณีนี้ฉันต้องใช้วัตถุ COLLADA บางคนบอกให้ฉันแบ่งโมเดลด้วยตัวเองภายในซอฟต์แวร์อย่าง Blender แต่น่าเสียดายที่มันไม่สามารถทำได้เพราะภูมิประเทศเหล่านี้ถูกสร้างขึ้นเป็นชิ้น ๆ ในซอฟต์แวร์อื่นและโหลดหลังจากเข้าสู่เกม ดังนั้นนี่จะเป็นงานที่ยิ่งใหญ่ที่จะต้องหั่นมันด้วยตนเองทุกครั้ง ดังนั้นตั้งแต่สัปดาห์ที่ฉันได้ศึกษาเกี่ยวกับวิธีที่ฉันสามารถแก้ปัญหานี้และขั้นตอนการโหลดตาข่ายนี้ภูมิประเทศภูมิประเทศตาม frustrum กล้องบันทึกประสิทธิภาพมากที่สุดเท่าที่เป็นไปได้ ฉันพบเอกสารจำนวนมากเกี่ยวกับการสร้างตาข่ายโพรซีเดอร์และฉันคิดว่าปัญหาของฉันสามารถแก้ไขได้โดยการแมปตาข่ายเข้ากับแปด นี่คืองานที่ยิ่งใหญ่อย่างน้อยสำหรับฉันและนั่นคือเหตุผลที่ฉันมาที่นี่เพราะฉันไม่ต้องการเสี่ยงที่จะไปในเส้นทางที่ผิดโดยไม่ได้ยินจากคนที่มีประสบการณ์ กล่าวโดยย่อฉันมีจุดยอดและดัชนีนับล้านที่รวมกันเป็นภูมิประเทศ แต่ด้วยเหตุผลที่ชัดเจนว่าฉันไม่สามารถวาดมันได้ในเวลาเดียวกัน จำเป็นต้องมีขั้นตอนบางอย่าง วิธีที่ดีที่สุดในการทำเช่นนั้นคือการรักษาตาข่ายขนาดใหญ่เป็นภูมิประเทศ? มีหนังสือเฉพาะเกี่ยวกับเรื่องนั้นไหม? มีวิธีที่ดีที่สุดที่จะใช้หรือไม่ ขออภัยสำหรับข้อผิดพลาดใด ๆ ฉันเป็นสามเณรมากในพื้นที่นี้

2
OpenGL รับร่างของวัตถุที่ทับซ้อนกันหลายรายการ
ฉันเพิ่งมีความคิดเกี่ยวกับเกมที่กำลังทำของฉันที่ทำด้วย opengl ใน c ++: ฉันต้องการมีโครงร่างขนาดใหญ่ (5-6 พิกเซล) บนวัตถุที่ทับซ้อนกันหลายอย่างเมื่อผู้เล่นชนะบางสิ่ง ฉันคิดว่าวิธีที่ดีที่สุดคือการใช้ stencil buffer แต่ไม่กี่ชั่วโมงที่ฉันพยายามทำการเรนเดอร์แบบปิดหน้าจอของ stencil buffer และฉันไม่สามารถบรรลุผลลัพธ์ใด ๆ มีเทคนิคอื่น ๆ ! นี่คือสิ่งที่ฉันต้องการได้รับ: ความคิดใด ๆ
10 opengl  outline 

1
ไปป์ไลน์การแสดงผลของเครื่องยนต์
ฉันพยายามสร้างเอ็นจิ้นเกม 2D โดยใช้ OpenGL ES 2.0 (iOS สำหรับตอนนี้) ฉันได้เขียนเลเยอร์แอปพลิเคชันใน Objective C และแยกตัวเองบรรจุ RendererGLES20 ใน C ++ ไม่มีการโทรเฉพาะ GL นอกสายแสดงภาพ มันทำงานได้อย่างสมบูรณ์ แต่ฉันมีปัญหาการออกแบบเมื่อใช้ shaders Shader แต่ละตัวมีคุณสมบัติและเครื่องแบบที่เป็นเอกลักษณ์ของตัวเองซึ่งจำเป็นต้องตั้งค่าก่อนการเรียกสายหลัก (glDrawArrays ในกรณีนี้) ตัวอย่างเช่นในการวาดรูปทรงเรขาคณิตฉันจะทำ: void RendererGLES20::render(Model * model) { // Set a bunch of uniforms glUniformMatrix4fv(.......); // Enable specific attributes, can be many glEnableVertexAttribArray(......); // Set a …

2
ยังมีข้อดีที่จะใช้ gl_quads หรือไม่?
ตกลงฉันเข้าใจว่า gl_quads เลิกใช้แล้วดังนั้นเราไม่ควร 'ใช้' อีกต่อไป ฉันยังเข้าใจว่าพีซีที่ทันสมัยเมื่อเรียกใช้เกมโดยใช้ gl_quads วาดรูปสามเหลี่ยมสองรูปจริง ๆ ตอนนี้ฉันได้ยินเพราะเกมควรเขียนโดยใช้รูปสามเหลี่ยมแทน แต่ฉันสงสัยว่าเนื่องจากลักษณะเฉพาะของ OpenGL ที่ทำให้รูปสี่เหลี่ยมนั้นเป็นรูปสามเหลี่ยมสองรูปมันจึงมีข้อได้เปรียบในการใช้ล่ามยัง? โดยเฉพาะอย่างยิ่งฉันกำลังแสดงผลคณะสี่คนที่ไม่ได้เชื่อมต่อจากวัตถุบัฟเฟอร์ที่ค่อนข้างใหญ่ หนึ่งในพื้นที่ที่ฉันต้องระวังก็คือเวกเตอร์ของโฟลตที่ฉันใช้ในการสร้าง / อัปเดตวัตถุบัฟเฟอร์เหล่านี้มีขนาดใหญ่เพียงใด (ฉันมีค่าลอยตัวเพิ่มขึ้นเล็กน้อยต่อหนึ่งจุดยอดและจุดยอดในบัฟเฟอร์ - บัฟเฟอร์ที่ใหญ่ที่สุดมีขนาดประมาณ 500KB) ถ้าฉันเปลี่ยนวัตถุบัฟเฟอร์ของฉันเพื่อวาดรูปสามเหลี่ยมจุดสุดยอดข้อมูลจุดนี้จะใหญ่กว่า 50% (จุดยอดหกจุดเพื่อวาดสี่เหลี่ยมจัตุรัสแทนที่จะเป็น 4) และใช้เวลาในการสร้าง CPU นานขึ้น 50% ถ้า gl_quads ยังคงทำงานอยู่ฉันจะได้รับผลประโยชน์ที่นี่หรือเป็นหน่วยความจำเพิ่มเติมและเวลา CPU 50% ที่ยังคงใช้ในการแปลงอัตโนมัติของ OpenGL เป็นสองรูปสามเหลี่ยมหรือไม่
10 opengl 

1
ฉันจะบรรลุถึงลักษณะ "กราฟิก 8 บิต" ได้อย่างไร
ฉันมีพื้นฐานการเขียนโปรแกรมที่แข็งแกร่งไม่ได้มาจากการพัฒนาเกม ฉันทำปิงปองและงูในโรงเรียนมัธยมเท่านั้นและฉันก็ทำ OpenGL ที่วิทยาลัย ฉันต้องการสร้างเอ็นจิ้นเกมของตัวเอง ไม่มีอะไรที่คิดว่าเป็นแค่เครื่องมือสร้างเกม 2D ที่เรียบง่าย แต่เพราะฉันเป็นโรงเรียนเก่าและรู้สึกย้อนยุค ฉันต้องการกราฟิกให้ดูเหมือนเกม 8 บิตเก่า (megaman, contra, super mario, ... ) แล้วเกมเก่า ๆ สร้างขึ้นมาได้อย่างไร? ฉันต้องการวิธีที่ง่ายที่สุด พวกเขายังใช้สินทรัพย์ (ภาพ) เหมือนเครื่องมือใหม่ ๆ ในตอนนี้หรือไม่ คุณจะประสบความสำเร็จในการเรนเดอร์ประเภทนี้โดยใช้ OpenGL ได้อย่างไร เก็บไว้ในใจ ทางออกที่ง่ายที่สุด ฉันอยากรู้ว่ามันถูกสร้างขึ้นมาได้อย่างไรและฉันจะทำซ้ำได้อย่างไร ไม่จำเป็นต้องเป็น OpenGL ด้วยซ้ำ ฉันวาดบนผืนผ้าใบที่หน้าต่าง ฉันต้องการที่จะทำให้มันเป็นรอยขีดข่วนโดยทั่วไป

2
เรียงลำดับวัตถุก่อนเรนเดอร์
ฉันพยายามที่จะใช้กราฟฉากและในบทความทั้งหมดที่ฉันเจอมีการพูดคุยเกี่ยวกับการเรียงลำดับวัตถุ ดังนั้นคุณจะต้องจัดเรียงวัตถุของคุณตาม "วัสดุ" ตัวอย่างเช่น ตอนนี้จนกระทั่งฉันนั่งลงและเริ่มนำมันมาใช้ฉันทำแบบนี้เพื่อรับอนุญาตเพราะมันสมเหตุสมผล แต่ตอนนี้ฉันสงสัยว่าการเรียงลำดับจะเปลี่ยนไปอย่างไร ในเครื่องมือของฉันฉันมีผู้จัดการสำหรับ UBOs ฉันใช้ข้อมูลเหล่านั้นเพื่อจัดเก็บข้อมูลที่จะแชร์ระหว่างโปรแกรมในขณะนี้ที่เกี่ยวข้องกับเวลาเท่านั้นกล้องและการฉายภาพการฝึกอบรมและไฟ (ฉันไม่ต้องกังวลกับการจัดการไฟที่ส่งผลกระทบต่อ) วัตถุใดที่เอทีเอ็ม) ตอนนี้สำหรับแต่ละรุ่นฉันต้องเปลี่ยนแบบจำลองเป็นชุดเมทริกซ์ของโลกการเรียงลำดับจะไม่เปลี่ยนแปลง ดังนั้นการกระโดดจากการเปลี่ยนเมทริกซ์นี้เป็นการตั้งค่าวัสดุสำหรับแต่ละวัตถุที่ไม่ดี? ฉันจำไม่ได้ว่าอ่านที่ไหนสักแห่งว่าทุกครั้งที่คุณเปลี่ยนบางสิ่งในท่อมันต้องล้างออกและอาจทำให้เกิดปัญหาด้านประสิทธิภาพ แต่สำหรับการวาดภาพแต่ละครั้งฉันกำลังตั้งค่าแบบจำลองให้กับเมทริกซ์ของโลกอยู่ดีดังนั้นมันจะทำให้รู้สึกกังวลเกี่ยวกับเรื่องนี้อย่างไร BTW มีข้อมูลใด ๆ เกี่ยวกับการเปลี่ยนเครื่องแบบและการเรียก glBufferSubData แพงกว่า (หรือน้อยกว่า)


2
อักขระการแสดงผลโดยตัดแขนขาออก (โมเดลเครื่องปั่นใน Java / OpenGL)
ฉันควรพิจารณาด้านใดในการสร้างภาพเคลื่อนไหวตัวละครและคลาสการเรนเดอร์ถ้าฉันต้องการให้แขนขาที่ถอดออกได้ ฉันพัฒนาระบบรายละเอียดของร่างกายที่สามารถทำให้ทุกอย่างเข้ากับระบบประสาทที่กำหนดไว้ ฉันกำลังเล็งหาสิ่งที่คล้ายกับระดับรายละเอียดความเสียหายที่พบในป้อมปราการ Dwarf ตัวอย่างเช่นเมื่อตัวละครได้รับความเสียหายที่ต้นแขนของพวกเขามีโอกาสที่จะเกิดความเสียหายของเส้นประสาทที่สามารถปิดการใช้งานแขนทั้ง หรือพวกเขาอาจสูญเสียแขนทั้งหมด ฉันมีระบบที่เขียนขึ้นเพื่อจัดการส่วนข้อมูลของสิ่งนี้ ตัวละครแต่ละตัวมีลำตัวซึ่งมีอวัยวะและชิ้นส่วนภายใน แต่ละส่วนยังสามารถมีส่วนย่อยของเด็กและชิ้นส่วนภายใน ภาคผนวกย่อยถูกปิดใช้งาน / ลบออกหากส่วนต่อพ่วงหลักถูกปิดใช้งาน / ลบออก หากส่วนใดส่วนหนึ่งของผู้พิการ / ถูกลบหรือชิ้นส่วนภายในจำเป็นสำหรับอายุการใช้งานอักขระจะตายในไม่ช้า สิ่งที่ฉันกำลังทำอยู่ตอนนี้คือส่วนวาด / ภาพเคลื่อนไหวของสิ่งนี้ ฉันจะกำหนดภาพเคลื่อนไหวอย่างไรให้รู้ว่าภาพใดได้รับอนุญาตให้อยู่ในสถานะปัจจุบันของร่างกาย (แขน / ขาหายไปเป็นต้น) ฉันจะตั้งค่าระบบการวาดเพื่อไม่ให้แขนขาหายไปได้อย่างไร แต่ละแขนขา / ส่วนจะต้องเป็นแบบของตัวเองหรือไม่ ระบบง่าย ๆ ที่ฉันเปลี่ยนจาก (ฉันเพิ่งเขียนเพื่อทดสอบ) นำเข้าเฟรมหลักทั้งหมดของแอนิเมชั่นเป็นแบบจำลองเต็มรูปแบบเป็น VBO (พร้อมด้วยจุดสุดยอดนับสำหรับจุดที่เฟรมเริ่ม / หยุด) มันไม่ได้นำเข้าหรือใช้กระดูกที่กำหนดไว้ในเครื่องปั่นและมันไม่ได้สอดแทรกระหว่างเฟรม นี่เป็นคำถามที่ค่อนข้างใหญ่ดังนั้นฉันจึงกำลังมองหาแหล่งข้อมูลที่สามารถพาฉันไปได้ทุกที่ แก้ไข ฉันถามเกี่ยวกับอนิเมชั่นที่รู้ว่าแขนขาไหนเป็นอนิเมชั่นเพราะฉันต้องการให้มันตั้งค่าให้ทำแอนิเมชั่นทางเลือกหากขาที่ต้องการหายไป หลังจากคิดเกี่ยวกับเรื่องนั้นฉันคิดว่าฉันจะทำการตรวจสอบก่อนที่จะเปิดใช้งานภาพเคลื่อนไหวและเปิดใช้งานภาพเคลื่อนไหวที่เหมาะสมในเวลานั้น

1
การเปลี่ยนรูปพื้นผิว
ฉันกำลังพยายามทำให้พฤติกรรมทางฟิสิกส์ที่ผิดรูปสำหรับพื้นผิวระดับสำเร็จ แต่ยังไม่มีความคิดว่าจะเริ่มต้นอย่างไรกับการดำเนินการจนถึงปัจจุบัน โดยไม่คำนึงถึงรูปร่างของพื้นผิว (เครื่องบิน, ก้อน, ทรงกลม…), ฉันต้องการให้มีการเยื้องเล็กน้อยที่ตำแหน่งจากเอนทิตีของเกม (ผู้เล่น, ศัตรู, วัตถุ ... ) มันเป็นเรื่องซับซ้อนที่จะอธิบายดังนั้นฉันจึงแสดงสิ่งที่ฉันกำลังพูดถึงนี่เป็นตัวอย่างของทรงกลม: ดังนั้นพื้นผิวควรจะสามารถทำให้เสียโฉมได้เล็กน้อย (ให้ดูเหมือนเตียงนุ่มหรือโซฟาจริงๆ) พื้นผิวของฉันอาจต้องมีจุดยอดสูงเพื่อให้การเปลี่ยนรูปราบรื่น แต่ปัญหาใหญ่ของฉันคือคณิตศาสตร์สำหรับการคำนวณการเสียรูปนี้ ฉันกำลังเขียนโปรแกรมใน C / C ++ กับ OpenGL แต่คำแนะนำใด ๆ ในทิศทางที่ถูกต้องจะใช้ได้

1
ฉันจะสร้างเอฟเฟกต์ "ท้องฟ้ายามค่ำคืน" ใน OpenGL ได้อย่างไร
ฉันกำลังสร้างเกมโดยใช้ OpenGL และฉันต้องการสร้างเอฟเฟกต์ของท้องฟ้ายามค่ำคืนโดยมีดาวอยู่สองสามดวง ฉันต้องการให้เอฟเฟกต์สีดำเป็นประกายบนท้องฟ้าเพื่อให้ดูดี บางคนสามารถช่วยในการดำเนินการผ่านหรือให้ลิงค์ไปยังการสอนที่ดี?
10 opengl  sky 

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