คำถามติดแท็ก graphics-programming

การเขียนโปรแกรมที่เกี่ยวข้องกับการแสดงข้อมูลบนหน้าจอคอมพิวเตอร์


9
กราฟิก 2D - ทำไมต้องใช้ spritesheets
ฉันได้เห็นตัวอย่างมากมายเกี่ยวกับวิธีแสดงสไปรต์จาก spritesheet แต่ฉันไม่เข้าใจเลยว่าทำไมมันเป็นวิธีที่พบได้บ่อยที่สุดในการจัดการกับสไปรต์ในเกม 2d ฉันเริ่มด้วยการเรนเดอร์เรนเดอร์แบบ 2d ในแอปพลิเคชั่นตัวอย่างไม่กี่ตัวที่ฉันทำโดยจัดการกับเฟรมภาพเคลื่อนไหวแต่ละประเภทสำหรับสไปรต์ประเภทใดก็ตามที่เป็นพื้นผิวของตัวเอง - และ ดูเหมือนว่าจะเหมาะกับฉันและเหมาะสมกับขั้นตอนการทำงานของฉันเพราะฉันมักจะทำแอนิเมชั่นเป็นไฟล์ gif / mng แล้วแยกเฟรมไปที่ pngs แต่ละอัน มีความได้เปรียบด้านประสิทธิภาพที่เห็นได้ชัดเจนในการแสดงผลจากแผ่นงานเดียวมากกว่าจากพื้นผิวแต่ละรายการหรือไม่? ด้วยฮาร์ดแวร์ที่ทันสมัยที่สามารถวาดรูปหลายเหลี่ยมหลายล้านหน้าจอได้ร้อยครั้งต่อวินาทีมันจะสำคัญสำหรับเกม 2d ของฉันที่เพิ่งจัดการสี่เหลี่ยมขนาด 50x100px สักสองสามโหลหรือไม่? รายละเอียดการนำไปใช้ของการโหลดเท็กซ์เจอร์ลงในหน่วยความจำกราฟิกและการแสดงใน XNA นั้นค่อนข้างเป็นนามธรรม สิ่งที่ฉันรู้คือพื้นผิวถูกผูกไว้กับอุปกรณ์กราฟิกเมื่อพวกเขาถูกโหลดจากนั้นในระหว่างวนรอบเกมพื้นผิวจะแสดงเป็นชุด ดังนั้นจึงไม่ชัดเจนว่าตัวเลือกของฉันมีผลต่อประสิทธิภาพหรือไม่ ฉันสงสัยว่ามีเหตุผลที่ดีมากที่นักพัฒนาเกม 2d ส่วนใหญ่ดูเหมือนจะใช้พวกเขาฉันไม่เข้าใจว่าทำไม

7
ทำไมสตูดิโอเกมต้องการโปรแกรมเมอร์กราฟิกหากพวกเขาใช้เอ็นจิ้นเกม
ในส่วนของสินเชื่อของเกมที่ผมเล่นมีชื่อของโปรแกรมเมอร์กราฟิก หากพวกเขาใช้เอ็นจิ้นเกมทำไมพวกเขาต้องการโปรแกรมเมอร์กราฟิก ? เอ็นจิ้นเกมทำงานได้หรือไม่

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

7
ฉันจะวาดโครงร่างรอบ ๆ แบบจำลอง 3 มิติได้อย่างไร
ฉันจะวาดโครงร่างรอบ ๆ แบบจำลอง 3 มิติได้อย่างไร ฉันพูดถึงบางสิ่งบางอย่างเช่นเอฟเฟกต์ในเกมโปเกมอนเมื่อเร็ว ๆ นี้ซึ่งดูเหมือนว่าจะมีโครงร่างพิกเซลเดียวรอบตัวพวกเขา:

2
เหตุใดแผนที่ปกติจึงเป็นสีน้ำเงินส่วนใหญ่
เหตุใดแผนที่ปกติจึงเป็นสีน้ำเงินส่วนใหญ่แทนที่จะเป็นสีแบบสุ่ม ฉันเดาว่าเวกเตอร์ปกติของวัตถุ 3 มิติสามารถชี้ไปในทุกทิศทางได้เช่น: (1.0, 0.1, 0.5), (0.1, -0.5, 0.3), (-0.51, 0.46, -1.0) ...

1
เหตุใดการทำแผนที่เงาจึงเป็นมาตรฐาน
แม้ว่าฉันจะเป็นโปรแกรมเมอร์โดยการค้าขาย แต่ฉันก็แทบไม่ได้สัมผัสกับการพัฒนาเกมเลย ฉันมีคำถามนี้มาระยะหนึ่งแล้วและตอนนี้ฉันกำลังมองหาการพัฒนาเกมฉันคิดว่ามันจะเป็นช่วงเวลาที่ดีสำหรับการถาม เหตุใดการทำแผนที่เงาจึงเป็นวิธีที่พิเศษในการใช้เกมเพื่อสร้างเงา จะทื่อมันดูน่ากลัว แม้กระทั่งเกมที่ทันสมัยที่มีการตั้งค่าเงาสูงสุดมีเงาแบบ block-y ที่ทำให้เสียสมาธิมาก Doom 3 ทำเมื่อ 11 ปีที่แล้วใช้ปริมาณเงาที่ดูดีกว่าการใช้แผนที่เงาที่ฉันเคยเห็นซึ่งรวมถึงเกม AAA ที่เปิดตัวในสัปดาห์เดียวกันกับคำถามนี้ที่โพสต์ไว้ บุคคลที่สามดัดแปลงสำหรับ Doom 3 ทำให้ขอบเงาอ่อนลงทำให้พวกเขาน่าประทับใจยิ่งขึ้น มีปัญหาทางเทคนิคหรือข้อ จำกัด บางประการเกี่ยวกับการนำสิ่งต่าง ๆ เช่นปริมาณเงา? แผนที่เงานั้นง่ายต่อการนำไปใช้งานหรือไม่ที่ devs ไม่ได้พิจารณาเรื่องอื่นเลย? ข้อมูลเดียวที่ฉันสามารถค้นหาเกี่ยวกับเรื่องนี้คือรูปหลายเหลี่ยมที่ประกอบขึ้นเป็นเล่มอาจมีขนาดใหญ่มากขึ้นและมีความต้องการมากขึ้น บางทีปริมาณเงามีความต้องการของระบบที่สูงขึ้นมาก แต่ถ้าเป็นเช่นนั้นพวกเขาจะใช้มันอย่างไรในปี 2004? คำถามนี้ไม่เฉพาะเจาะจงกับการทำแผนที่เงากับปริมาณเงาพวกเขาเป็นเพียง 2 เดียวที่ฉันเคยเห็นใช้ในผลิตภัณฑ์เต็มรูปแบบและฉันไม่สามารถหาข้อมูลมากมายเกี่ยวกับเทคนิคอื่น ๆ ได้

3
จะกำหนดอ่าวและช่องแคบได้อย่างไรในแผนที่ที่สร้างขึ้นตามขั้นตอน
ฉันมีแผนที่ที่สร้างขึ้นแบบขั้นตอนโดยใช้เซลล์ Voronoi พร้อมระดับน้ำทะเลที่กำหนดและแผนที่ความสูงที่เชื่อได้ จนถึงตอนนี้ฉันได้ประสบความสำเร็จในการติดฉลากคุณลักษณะทางภูมิศาสตร์บางอย่าง: ที่ดิน, มหาสมุทร, ทะเลสาบ, แม่น้ำ, ปากแม่น้ำ, การบรรจบกัน, ภูเขาและชีวกลศาสตร์ Biomes ได้แก่ ทุ่งทุนดราป่าเหนือทุ่งหญ้าและป่าเขตร้อน นอกจากนี้ยังมี biomes อื่น ๆ อีกสองสามที่นั่น แต่สำหรับจุดประสงค์ของฉันพวกเขาไม่ได้สำคัญในตอนนี้ ฉันต้องการติดป้ายบริเวณช่องแคบและช่องแคบต่อไป แต่ฉันกำลังสูญเสียวิธีการทำอย่างถูกต้อง อ่าวเป็นแหล่งน้ำชายฝั่งที่เชื่อมต่อกับมหาสมุทรโดยตรง ช่องแคบเป็นทางน้ำที่แคบและก่อตัวขึ้นตามธรรมชาติซึ่งเชื่อมระหว่างสองส่วนของมหาสมุทร โดยพื้นฐานแล้วที่ซึ่งที่ดินสองผืนเกือบจะสัมผัสและมีมหาสมุทรทั้งสองด้าน เรียกอีกอย่างว่า "ช่อง" สำหรับการพิจารณาคุณสมบัติฉันสามารถวนลูปผ่านคุณสมบัติใด ๆ ตามประเภทดังนี้: for each (var feature:Object in geography.getFeaturesByType(Geography.LAND)) // loop through lands for each (var cell:Cell in feature.cells) // loop through cells …

3
ฉันจะสร้างรูปแบบของกราฟิก "เรืองแสง" แบบ 2D ได้อย่างไร
ฉันพอใจกับพื้นฐานของการสร้างเกม 2d sprite ใน XNA ซึ่งวัตถุทั้งหมดของฉันเป็นเพียงภาพ. png ที่ฉันเคลื่อนไหวไปมา ฉันต้องเรียนรู้อะไรต่อไปเพื่อให้สามารถพัฒนาเกม 2d ที่ใช้รูปแบบศิลปะที่คล้ายกับ Super Laser Racer ตัวอย่างเช่น ตัวอย่างอื่น ๆ ของสไตล์นี้ ได้แก่ Frozen Synapse, Geometry Wars, เป็นต้น ฉันจะอธิบายรูปแบบนี้ "เรขาคณิตนามธรรมเรืองแสง 2D" หรืออะไรทำนองนั้น ฉันเห็นว่าเอฟเฟกต์จำนวนมากในเกมประเภทนี้ประสบความสำเร็จผ่านระบบอนุภาคและบางสิ่งก็ยังคงเป็นเพียงแค่สไปรต์ที่อาจถูกวาดในโปรแกรมแก้ไขกราฟิกเพื่อดู "เรืองแสง" ฯลฯ แต่ส่วนที่เหลือนั้นทำได้โดยการดึงสายไปยัง DirectX และใช้เครื่องมือปรับแต่งเอง ฯลฯ ? นั่นถูกต้องใช่ไหม? ฉันไม่แน่ใจว่าจะเรียนรู้อะไรต่อไปเพื่อไปในทิศทางนี้หรือคำถามที่ต้องถาม

2
ฉันจะสร้างเลนส์มุมกว้าง / เลนส์ Fisheye ด้วย HLSL ได้อย่างไร
อะไรคือแนวคิดที่จะต้องดำเนินการเพื่อให้ได้ผลของเลนส์มุมกว้างที่มีความแตกต่างกัน? Pseudocode และคำอธิบายเฉพาะที่อ้างอิงถึงขั้นตอนต่าง ๆ ของไปป์ไลน์เนื้อหารวมถึงข้อมูลใดที่จำเป็นต้องส่งผ่านจากซอร์สโค้ดไปยัง HLSL จะมีประโยชน์มาก นอกจากนี้อะไรคือความแตกต่างระหว่างการนำเลนส์มุมกว้างไปใช้กับเลนส์ฟิชอาย?

3
ทำไมเอ็นจิ้นเกมส่วนใหญ่ไม่ใช้ gif สำหรับพื้นผิวเคลื่อนไหว?
อะไรจะดีไปกว่าการใช้ Animation ชีตหรือ Gif ข้อดีอย่างหนึ่งของ Gif ที่มีเหนือแผ่นภาพเคลื่อนไหวคือคุณไม่ต้องคิดเกี่ยวกับเฟรมที่จะเร็วหรือช้าเกินไปเพราะรหัสของคุณและการอัพเดทในเห็บที่เหมาะสม อะไรคือข้อเสียของการใช้ Gif และข้อดีของ Animation Sheet มีมากกว่า Gif

8
OpenGL, SFML และ SDL มีข้อได้เปรียบอะไรบ้างในการแสดงผลซอฟต์แวร์
ฉันเริ่มดูกระแส Handmade Heroที่ซึ่ง Casey Muratori สร้างเอ็นจิ้นเกมโดยไม่ต้องใช้เฟรมเวิร์กหรืออย่างนั้น เมื่อวานฉันไปถึงส่วนที่เขาแสดงให้เห็นว่าภาพวาดลงบนหน้าจออย่างไร เท่าที่ฉันเข้าใจเขาได้จัดสรรหน่วยความจำบางส่วนให้ใหญ่เท่ากับขนาดหน้าจอที่เขาต้องการวาด จากนั้นเขาสร้างบิตแมปที่เขาส่งไปยังหน่วยความจำบัฟเฟอร์ที่เขาจัดสรรและดึงมันไปที่หน้าจอโดยใช้ฟังก์ชั่นเฉพาะของระบบปฏิบัติการ นี่ดูเหมือนจะค่อนข้างตรงไปตรงมา ฉันใช้ GameMaker เปลี่ยนเป็น Love2D ทำงานเล็กน้อยกับ Sprite Kit แต่ฉันสงสัยอยู่เสมอว่าเกิดอะไรขึ้นภายใต้เลเยอร์นี้บางครั้งทำให้สับสน ระบุว่าทำไมแม้แต่ต้องใช้ห้องสมุดกราฟิก (OpenGL, SFML, SDL, ... ) เมื่อสิ่งที่คุณต้องทำคือเพียงจัดสรรบัฟเฟอร์บางส่วนผ่านบิตแมปและวาดลงบนหน้าจอ หากคุณต้องการวาดสิ่งที่แตกต่างให้กับหน้าจอคุณเพียงแค่เขียนลงในบิตแมปของคุณซึ่งจะถูกส่งผ่านไปยังบัฟเฟอร์ ฉันค่อนข้างใหม่กับการเขียนโปรแกรม แต่ดูเหมือนจะง่ายสำหรับฉัน โปรดแก้ไขฉันหากฉันผิด

3
ฉันจะรู้ได้อย่างไรว่าฉันสรุปกราฟิก APIs แน่นเกินไป
เมื่อสร้าง renderer ที่รองรับ API กราฟิกหลายตัวโดยทั่วไปคุณต้องการทำให้โค้ดของคุณในไลบรารีระดับต่ำที่เชื่อมโยงกับ API กราฟิกบางประเภทเช่น OpenGL, Vulkan, D3D11 และอื่น ๆ พวกเขาทำงานแตกต่างกันมากดังนั้นการสร้าง API ทั่วไปที่ดีจึงเป็นสิ่งจำเป็น ฉันได้อ่านแล้วว่าโดยปกติคุณจะต้องการใช้ "แบ็คเอนด์" ที่ใช้ฟังก์ชั่นพื้นฐานสำหรับแต่ละ API ที่คุณต้องการสนับสนุนและ "ฟรอนต์เอนด์" ซึ่งเป็นสิ่งที่โปรแกรมเมอร์ใช้ในการวาดเนื้อหาบน จอภาพ ฉันจะรู้ได้อย่างไรว่าฉันทำสิ่งที่เป็นนามธรรมมากเกินไป?

2
โดยปกติฉันสามารถผูกกับพื้นผิวได้กี่ครั้ง?
ฉันกำลังพัฒนาเอ็นจิ้นเกมและมันจะทำงานกับฮาร์ดแวร์ที่ทันสมัย ​​(Shader model 4+) เท่านั้น ฉันคิดว่าตามเวลาที่ฉันทำกับมันจะไม่เป็นเช่นข้อกำหนดที่ไร้เหตุผล คำถามของฉันคือพื้นผิวฉันสามารถผูกในการ์ดกราฟิกที่ทันสมัยได้กี่ครั้ง? 16 ก็เพียงพอแล้ว ฉันสามารถคาดหวังว่าการ์ดกราฟิกสมัยใหม่ส่วนใหญ่จะรองรับพื้นผิวจำนวนนั้นได้หรือไม่ GTX 460 ของฉันดูเหมือนจะรองรับ 32 แต่ฉันไม่รู้ว่านั่นเป็นตัวแทนของการ์ดแสดงผลที่ทันสมัยที่สุดหรือไม่

6
มีเหตุผลในการเพิ่มตัวเลือกเพื่อไม่ใช้เทคโนโลยีขั้นสูงในโปรแกรมเกมหรือไม่?
ฉันพัฒนาเกมเอ็นจิ้นและได้ค้นพบและอ่านเทคโนโลยีเกมเช่นการกรองแบบแอนไอโซทรอปิกการบดเคี้ยวโดยรอบการป้องกันนามแฝง ฯลฯ โดยปกติแล้วในเกมคุณสามารถสลับการตั้งค่าเหล่านี้ในและนอก อย่างไรก็ตามหากการตั้งค่าเหล่านี้ไม่ได้เพิ่มอะไรนอกจากแง่บวกมีเหตุผลที่จะเพิ่มค่าสลับสำหรับสิ่งเหล่านี้ในเอ็นจิ้นเกมสำหรับนักพัฒนาหรือไม่? ฉันเข้าใจว่าประสิทธิภาพเป็นปัจจัยสำคัญ แต่มีเหตุผลอื่นอีกไหมที่ทำให้การตั้งค่าเหล่านี้พร้อมใช้งานเสมอ

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