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

DirectX เป็นชุด API มัลติมีเดียจาก Microsoft มุ่งเน้นที่นักพัฒนาเกมเป็นหลัก API ยอดนิยมภายในคอลเลกชัน DirectX ได้แก่ Direct3D, XInput และ XAudio

1
ฉันจะรวมกระสุนฟิสิกส์เข้ากับเกมของฉันได้อย่างไร
ฉันดาวน์โหลดไฟล์รีลีสที่นี่แต่ฉันไม่แน่ใจว่าจะเริ่มจากตรงไหน ในเกมของฉันฉันมีรูปสี่เหลี่ยมผืนผ้าจำนวนหนึ่งและทรงกลมฉันต้องการให้สิ่งเหล่านี้ชนกัน (พวกเขาทั้งหมดมีตาข่ายและปริมาณการเชื่อมโยงที่เกี่ยวข้อง) แก้ไข - ฉันเพิ่งรู้ว่าลูกบาศก์จริง ๆ แล้วมี AABB เกี่ยวข้องกับพวกเขา ฉันเดาว่าฉันจะต้องเปลี่ยนอย่างน้อย ฉันต้องทำตามขั้นตอนอะไรบ้าง?

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

1
การจัดการสถานะกราฟิกและส่วนประกอบ?
ฉันมักจะทำ optimazation ก่อนกำหนดจำนวนมากเมื่อต้องรับมือกับกราฟิก มีหลักการบางอย่างที่ฉันพยายามทำตามอยู่เสมอ: รักษาจำนวนองค์ประกอบ D3D ให้น้อยที่สุด (สถานะการแสดงผลบัฟเฟอร์ตัวติดตั้ง ฯลฯ ) ผูกส่วนประกอบถ้าจำเป็นจริงๆ (ไม่ได้ผูกไว้แล้ว ฯลฯ ) เชี่ยวชาญส่วนประกอบให้มากที่สุด (ตั้งค่า BindFlags ที่จำเป็นเท่านั้นเป็นต้น) สิ่งนี้ทำให้ฉันสร้างสิ่งห่อหุ้มที่ซับซ้อนมากสำหรับการจัดการส่วนประกอบที่สร้างขึ้นและสถานะของการวางท่อในปัจจุบัน สิ่งนี้ไม่เพียงใช้เวลาในการพัฒนาที่มีค่าของฉันเท่านั้น แต่ยังเพิ่มความซับซ้อนอีกชั้นหนึ่ง และที่เลวร้ายที่สุดของทั้งหมด: ฉันไม่รู้ด้วยซ้ำว่ามันคุ้มค่ากับปัญหาหรือไม่ ข้อควรพิจารณาในการปรับให้เหมาะสมของฉันบางอย่างอาจมีการใช้งานในระดับที่ต่ำกว่าและฉันเพิ่งทำซ้ำพวกเขาเพิ่มเวลาที่สูญเสียใน CPU การพิจารณาอื่น ๆ อาจไม่จำเป็นอย่างสมบูรณ์เนื่องจากผลกระทบต่อประสิทธิภาพการทำงานนั้นเล็กน้อย ดังนั้นคำถามของฉันคือ: แนวทางใดข้างต้นที่ใช้ได้และฉันควรทำตามเท่าไหร่? GPU จัดการกับการเปลี่ยนแปลงสถานะอย่างไร จะเกิดอะไรขึ้นถ้าฉันเปลี่ยนสถานะที่ไม่เคยใช้ (ไม่มีการเรียกสายขณะที่ใช้งาน) บทลงโทษที่เกิดขึ้นจริงจากการผูกส่วนประกอบต่าง ๆ มีอะไรบ้าง? ข้อควรพิจารณาด้านประสิทธิภาพอื่น ๆ ที่ควรทำ โปรดอย่าเพิ่งบอกฉันว่าฉันไม่ควรสนใจเรื่องการแสดงจนกว่าจะถึงขีด จำกัด ที่แท้จริง ในขณะที่เห็นได้ชัดว่าเป็นเรื่องจริงจากมุมมองของภาคปฏิบัติฉันให้ความสนใจในทฤษฎีเป็นหลัก ฉันต้องการต่อสู้กับการสร้างกรอบกราฟิกที่ดีที่สุดและฉันไม่คิดว่าฉันจะทำเช่นนั้นได้ด้วยการบรรยายเรื่อง การจัดการส่วนประกอบ ขณะนี้ฉันกำลังเขียนแอพพลิเคชั่น DirectX 11 ใน …

4
HLSL shader จริง ๆ แล้วมีผลกระทบต่อการแสดงผลอย่างไร
ฉันเข้าใจไวยากรณ์ของ HLSL เช่นสมมติว่าฉันมีสิ่งนี้เป็น HLSL ของฉัน: struct VOut { float4 position : SV_POSITION; float4 color : COLOR; }; VOut VShader(float4 position : POSITION, float4 color : COLOR) { VOut output; output.position = position; output.position.xy *= 0.7f; // "shrink" the vertex on the x and y axes output.color = color; return output; …
11 directx  hlsl 

2
เนื่องจาก Table.drawDebug เลิกใช้แล้วใน libGDX ฉันควรใช้อะไรแทน
ฉันกำลังติดตามหนังสือ "Learning LibGDX Game Development" เพื่อสร้างเกมอย่างง่าย ฉันอยู่ในส่วนการสร้างเมนูที่เราสร้างสเตจและแสดงผลด้วยเส้นขอบการดีบัก หนังสือเล่มนี้บอกว่าจะใช้Table.drawDebug(stage)แต่วิธีการแบบคงที่นี้ดูเหมือนว่าจะถูกลบออกจากTableชั้นเรียนกรอบทั้งหมด ฉันกำลังนำเข้าcom.badlogic.gdx.scenes.scene2d.ui.Table; ด้านล่างคือรหัสของฉัน: @Override public void render(float deltaTime) { Gdx.gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); if (debugEnabled) { debugRebuildStage -= deltaTime; if (debugRebuildStage <= 0) { debugRebuildStage = DEBUG_REBUILD_INTERVAL; rebuildStage(); } } stage.act(deltaTime); stage.draw(); Table.drawDebug(stage); } บรรทัดสุดท้ายTable.drawDebug(stage);มีข้อผิดพลาดในการรวบรวม"The method drawDebug(ShapeRenderer) in the type Table is …

6
Visual Studio 2012 และการพัฒนาเกม [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา เอาล่ะฉันคิดว่ามันเป็นคำถามง่าย ๆ แต่ฉันมีปัญหาในการหาคำตอบ ฉันได้อ่านแล้วว่า XNA จะไม่อยู่ใน Visual Studio 2012 ฉันเพิ่งเรียนรู้การใช้ XNA แต่เนื่องจากฉันต้องการทำงานกับเกมฉันอยากรู้ว่ามีวิธีพัฒนาเกมโดยใช้ C # ใน Visual Studio 2012 หรือไม่ หรือถ้าฉันควรเรียนรู้ทุกอย่างอีกครั้งโดยใช้ C ++ และ Direct3D C # เป็นภาษาที่ฉันชอบมากดังนั้นหากไม่มีวิธีที่จะทำใน C # แต่สิ่งที่ค่อนข้างง่ายต่อการใช้ Java สำหรับการพัฒนาเกมฉันก็สนใจเช่นกัน ขอบคุณมาก!
10 xna  c#  3d  directx  .net 

3
มีข้อได้เปรียบในการใช้ DX10 / 11 สำหรับเกม 2D หรือไม่?
ฉันไม่คุ้นเคยกับชุดคุณลักษณะที่แนะนำโดยฮาร์ดแวร์ระดับ DX10 / 11 ฉันคุ้นเคยกับขั้นตอนใหม่ที่เพิ่มเข้ากับไปป์ไลน์กราฟิกที่ตั้งโปรแกรมได้เช่น geometry shader, compute shader และขั้นตอน tessellation ใหม่ ฉันไม่เห็นว่าสิ่งเหล่านี้สร้างความแตกต่างให้กับเกม 2D ได้อย่างไร มีเหตุผลที่น่าสนใจไหมที่จะเปลี่ยนไปใช้ DX10 / 11 (หรือ OpenGL ที่เทียบเท่า) สำหรับเกม 2D หรือมันจะฉลาดกว่าที่จะยึดติดกับ DX9 โดยพิจารณาว่าส่วนแบ่งที่สำคัญของตลาดยังคงใช้เทคโนโลยีเก่า (เช่น กุมภาพันธ์ 2555 การสำรวจบน Steam แสดงรายการผู้ใช้ประมาณ 17% ที่ยังใช้ Windows XP อยู่ใช่ไหม?
10 2d  graphics  directx 

3
ย้ายจาก DirectX 10 ไปยัง DirectX 11
ฉันได้ทำโปรเจ็กต์งานอดิเรกขนาดเล็กในจำนวนที่สมเหตุสมผลโดยใช้ DirectX 9 แต่ถึงเวลาที่จะย้ายไปที่ DirectX 11 แล้ว ฉันมีหนังสือ Frank Luna'a ในการเขียนโปรแกรมสามมิติโดยใช้ DirectX 10 แต่ไม่มีอะไรใน DirectX 11 ฉันเชื่อว่าพวกเขาคล้ายกันมาก แต่สงสัยว่าถ้าใครสามารถระบุความแตกต่างหลักในระดับรหัสที่ฉันจะต้องระวัง ( หรือชี้ไปที่แหล่งข้อมูลที่มีอยู่)
10 directx 

2
ฉันจะสร้างประกายแวววาวได้อย่างไร?
ฉันพยายามสร้างเอฟเฟกต์ระยิบระยับสำหรับ shader เรียลไทม์ของฉัน แต่ฉันไม่รู้ว่าจะทำอย่างไร นี่คือตัวอย่างหนึ่งและอีกตัวอย่างหนึ่ง ฉันสามารถใช้เทคนิคใดในการทำสิ่งนี้

1
2D โปรไฟล์ผิวด้านบนของน้ำ
ฉันพยายามสร้างเอฟเฟกต์ของความหนาของผิวน้ำด้วย shader ที่ยอด ฉันอยู่ในสภาพแวดล้อมของเกม 3 มิติ แต่มันเป็นมุมมองเลื่อนดังนั้นมุมมอง "2D" นี่คือบทแนะนำที่ดีเกี่ยวกับการสร้างเอฟเฟกต์ดังกล่าวใน 2D จริงโดยใช้ตัวแบ่งส่วน แต่ฉันคิดว่ามันใช้ไม่ได้ในกรณีนี้ สำหรับช่วงเวลาที่ฉันมีเครื่องบินเพียงลำเดียวฉันก็ใช้การหักเหแสง และฉันต้องการใช้เอฟเฟกต์ความหนาของน้ำ แต่ฉันไม่รู้จะทำยังไง ฉันไม่ได้พยายามที่จะสร้างการเสียรูป / การเคลื่อนที่ของน้ำโดยใช้จุดยอดในขณะนี้นี่ไม่ใช่ประเด็น ฉันไม่รู้ว่ามันเป็นไปได้หรือเปล่ากับ quad ที่เรียบง่ายบางทีฉันควรใช้วัตถุแบบนี้ นี่คือตัวอย่างบางส่วน. ฉันไม่มีความคิดเกี่ยวกับวิธีสร้างเอฟเฟกต์นี้ ขอบคุณมาก ! [ แก้ไข ] เพิ่มเอฟเฟกต์น้ำเรย์แมนเพื่อการอ้างอิงที่ดีขึ้นของเอฟเฟกต์

2
D3D / DXGI จัดการการเปลี่ยนหน้าจอเต็ม
ฉันมีแอปพลิเคชั่น D3D11 และฉันต้องการเพิ่ม suport แบบเต็มหน้าจอที่เหมาะสม ตอนนี้ฉันสามารถให้ DXGI สลับหน้าต่างของฉันเป็นแบบเต็มหน้าจอสำหรับฉันและฉันรู้สึกว่า DXGI จะดูแลทุกอย่างที่จำเป็นเพื่อให้การสลับโซ่ด้านหน้าและด้านหลังแทนการ blitting อย่างไรก็ตามการทำให้ DXGI ทำงานได้อย่างรวดเร็วดูเหมือนว่าไม่น่าเชื่อถือด้วยการติดตั้งจอภาพหลายจอ - หน้าจอที่สองยังคงเป็นสีดำทั้งหมดหลังจากการสลับเวลาเป็นอย่างมากโดยไม่มีเหตุผลหรือรูปแบบที่ชัดเจน อาจต้องใช้การสลับไปมาสองสามครั้งก่อนที่ฉันจะได้รับหน้าต่างเต็มหน้าจอและส่วนที่เหลือของเดสก์ท็อปที่แสดงบนหน้าจออื่น เห็นได้ชัดว่าฉันไม่ได้อยู่คนเดียวกับเรื่องนี้ Battlefield 3 และ WoW ดูเหมือนจะมีปัญหาที่คล้ายกันสำหรับผู้คนจำนวนมาก ตอนนี้คำถามที่เกิดขึ้นจริง: ฉันเดาว่าแม้กระทั่ง บริษัท ผู้พัฒนาเกม AAA เหล่านั้นก็ไม่สามารถทำงานได้ความหวังที่ยิ่งใหญ่ที่สุดของฉันคือการเปลี่ยนไปใช้งานแบบเต็มหน้าจอด้วยตัวเอง มีสิ่งใดบ้างที่ฉันสามารถทำได้เพื่อยกระดับหน้าต่าง / swapchain ของฉันให้อยู่ในโหมดเต็มหน้าจอแบบเต็มบัฟเฟอร์หรือไม่

3
Windows 8 ยังรองรับ DirectX 9 หรือไม่
Windows 8 รองรับ DirectX 9 หรือไม่ เพราะฉันดูตัวอย่างที่เขียนใน C ++ และ DirectX 9 ที่สร้างขึ้นสำหรับ Windows 8 มันไม่ใช่อย่างที่ฉันรู้ (ดูที่นี่http://directxtutorial.com/Lesson.aspx?lessonid=111-4-2 ) เช่น Inizialising DirectX พร้อม COM: ComPtr<ID3D11Device1> dev; ComPtr<ID3D11DeviceContext1> devcon; มันแปลกเพราะฉันรู้ว่ามันเป็นแบบเก่า: ID3D11Device *dev; ID3D11DeviceContext *devcon; (ฉันหวังว่าคุณจะเข้าใจสิ่งที่ฉันต้องการจะบอก) ฉันหวังว่ามันจะไม่เปลี่ยนแปลงอย่างสมบูรณ์เนื่องจากระบบปฏิบัติการใหม่ที่วางจำหน่าย
9 c++  directx  windows 

1
gluLookAt ทำงานอย่างไร
จากความเข้าใจของฉัน gluLookAt( eye_x, eye_y, eye_z, center_x, center_y, center_z, up_x, up_y, up_z ); เทียบเท่ากับ: glRotatef(B, 0.0, 0.0, 1.0); glRotatef(A, wx, wy, wz); glTranslatef(-eye_x, -eye_y, -eye_z); แต่เมื่อฉันพิมพ์ModelViewเมทริกซ์การเรียกเพื่อglTranslatef()ดูเหมือนจะทำงานไม่ถูกต้อง นี่คือข้อมูลโค้ด: #include <stdlib.h> #include <stdio.h> #include <GL/glut.h> #include <iomanip> #include <iostream> #include <string> using namespace std; static const int Rx = 0; static const int …

2
จัดการกับแสงจำนวนมากในฉาก (พร้อมเฉดสี)
ฉันอยากรู้เกี่ยวกับวิธีจัดการกับแสงไฟมากมายในฉาก ให้แผนที่ขนาดใหญ่มากในเกมเล่นตามบทบาทกับดันเจี้ยน (พร้อมไฟในนั้น) ฯลฯ ฉันรู้เกี่ยวกับแสงที่เลื่อนออกไป แต่คำถามของฉันคือเพิ่มเติม: วิธีการที่ไม่ได้ทำให้ไฟจำนวนมาก เห็นได้ชัดว่าเป็นที่น่าพอใจที่จะแสดงแสงที่มีผลต่อฉากเท่านั้น แต่ฉันไม่รู้เทคนิค / อัลกอริทึมในการเก็บภาพ ไม่มีใครต้องการหรือสามารถให้แสง 500 จุดเพียงเพราะมีบางแห่งในแผนที่ แต่ไม่มีใครสามารถนำเส้นตรงจากแสงไปยังผู้เล่นและทดสอบว่ามีอะไรอยู่ระหว่างนั้นหรือไม่ ระยะทางดูไม่เหมือนตัวบ่งชี้ที่ดี (แสงแดด?) tl; dr: ฉันจะทราบได้อย่างไรว่าไฟใดที่ส่งผลกระทบต่อฉากเพื่อแสดงผลเท่านั้น

4
การเรนเดอร์พิกเซลที่สมบูรณ์แบบสำหรับชุดเรนเดอร์เป้าหมายด้วย Quad เต็มหน้าจอ
ฉันมีปัญหาบางอย่างในการแสดงผลกลุ่มของค่าที่แสดงผลเป้าหมาย ค่าไม่เคยจบลงในช่วงที่ฉันต้องการ โดยพื้นฐานแล้วฉันใช้รูปสี่เหลี่ยมเต็มหน้าจอและพิกเซลเชดเดอร์เพื่อแสดงผลพื้นผิวเป้าหมายของชุดเรนเดอร์ของฉันจากนั้นตั้งใจจะใช้พิกัดพื้นผิวเป็นพื้นฐานสำหรับการคำนวณบางอย่างในเดอร์ พิกัดพื้นผิวของช่วงควอดจาก (0,0) ที่มุมบนซ้ายถึง (1,1) ที่มุมล่างขวา ... ปัญหาคือหลังจากการแก้ไขค่าเหล่านี้จะไม่มาถึงที่ส่วนพิกเซลเช่น . ตัวอย่าง: ฉันแสดงผลเป็นพื้นผิว 4x4 และตัวแบ่งส่วนในกรณีนี้เพียงแค่แสดงพิกัดพื้นผิว (u, v) ในช่องสีแดงและสีเขียว: return float4(texCoord.rg, 0, 1); สิ่งที่ฉันต้องการออกจากมันคือพื้นผิวที่พิกเซลที่ด้านซ้ายบนคือ RGB (0,0,0) และทำให้เป็นสีดำพิกเซลที่ด้านบนขวาคือ RGB (255,0,0) และสว่าง สีแดงและพิกเซลที่ด้านล่างซ้ายคือ RGB (0,255,0) - สีเขียวสดใส อย่างไรก็ตามฉันได้รับที่นี่แทน (การเรนเดอร์รูปสี่เหลี่ยมตรงไม่มีการแก้ไข) พิกเซลด้านบนซ้ายเป็นสีดำ แต่ฉันได้สีแดงเข้มและเขียวเข้มที่มุมอื่น ๆ เท่านั้น ค่า RGB ของพวกเขาคือ (191,0,0) และ (0,191,0) ฉันสงสัยอย่างยิ่งว่ามันเกี่ยวข้องกับตำแหน่งการสุ่มตัวอย่างของรูปสี่เหลี่ยม: พิกเซลด้านบนซ้ายอย่างถูกต้องสุ่มตัวอย่างที่มุมบนซ้ายของรูปสี่เหลี่ยมและได้รับ (0,0) เป็นพิกัด …

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