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

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

1
เอฟเฟกต์กราฟิกขั้นสูงถูกนำไปใช้อย่างไร
ฉันอยากรู้ว่าเอฟเฟกต์ 3D เช่นคาถาใน Warcraft หรือ Torchlight ถูกนำไปใช้แบบกราฟิกอย่างไร ฉันเพิ่งเสร็จสิ้นหนังสือบน Direct3D และรู้สึกสบายใจกับมันและกราฟิก 3D โดยทั่วไป แต่ฉันไม่แน่ใจว่าฉันจะทำอะไรเช่นมีตัวละคร 'cast a bolt bolt' หรือคาถาอื่น ๆ ในเชิงกราฟิก ฉันคิดว่ามันเกี่ยวข้องกับเอฟเฟกต์ของอนุภาคหรือพิกัดพื้นผิวแบบเคลื่อนไหวใคร ๆ สามารถให้ข้อมูลเชิงลึกที่เฉพาะเจาะจงกับฉันได้บ้าง ขอบคุณ

3
เหตุใดฉันจึงไม่ได้รับบูลบรรจุและปรับให้เป็นบัฟเฟอร์คงที่ D3D
เอาล่ะฉันมีเวลายากที่จะได้รับการบรรจุและจัดแนวเป็นบัฟเฟอร์คงที่ hlsl และฉันไม่แน่ใจว่าทำไม นี่คือบัฟเฟอร์ใน hlsl cbuffer MaterialBuffer : register(b1) { float3 materialDiffuseAlbedo; float materialSpecularExponent; float3 materialSpecularAlbedo; bool isTextured; }; และนี่คือ c ++ struct GeometryBufferPass_MaterialBuffer { XMFLOAT3 diffuse; float specularExponent; XMFLOAT3 specular; bool isTextured; }; ฉันพยายามย้ายบูลและขยายโครงสร้างในทุก ๆ ด้านโดยไม่มีโชค วิธีที่ถูกต้องในการทำเช่นนี้คืออะไร?

4
ในเกมแบบ 2d ที่ใช้วิธีการเลื่อนแบบไหนดี?
ฉันใช้ Direct3D กับ wrapper D3DXSPRITE เพื่อวาดแผ่นกระเบื้องไปที่หน้าจอ ฉันมีคลาสกระเบื้องที่ประกอบด้วยสมาชิกเช่นชนและประเภทกระเบื้องแล้วฉันมีอาร์เรย์ของกระเบื้องเช่น ตารางไทล์ [256] [256]; ซึ่งจะเป็นวิธีที่ดีกว่า วาดผู้เล่นที่อยู่ตรงกลางของหน้าจอและชดเชยที่แผนที่วาด - เคลื่อนย้ายเครื่องเล่นโดยใช้กล้องต่อไปนี้ ฉันใช้วิธีแรก แต่มันซับซ้อนขึ้นมากเมื่อคุณไปถึงขอบด้านซ้ายบนของแผนที่และเมื่อผู้เล่น / ศัตรูคนอื่นอยู่บนแผนที่และเคลื่อนที่ในเวลาเดียวกัน ถ้าฉันทำให้กล้องติดตามผู้เล่นฉันจะต้องเรียก spriteBatch-> Draw (... ) สำหรับไทล์กริดเดี่ยวทุกแผ่นแม้ว่าจะมีเพียงไม่กี่คนที่สามารถวางบนหน้าจอได้หรือไม่?
9 c++  directx  directx9 

3
คุณทำให้ Direct3D ทำงานในเบราว์เซอร์ได้อย่างไร
ฉันเจอเกมที่เป็น 3D ที่สามารถเล่นได้ในเบราว์เซอร์ ต้องติดตั้งปลั๊กอินเพื่อใช้งาน ฉันเดาว่าปลั๊กอินสร้างหน้าต่าง D3D ภายในเบราว์เซอร์ ฉันจะดำเนินการเกี่ยวกับสิ่งที่คล้ายกันอย่างไร

3
การสุ่มตัวอย่างพื้นผิว Direct3D ช้ามาก
ดังนั้นฉันจึงเขียนเกมเล็ก ๆ โดยใช้ Direct3D 9 และฉันใช้การทำงานหลายอย่างเพื่อภูมิประเทศ สิ่งที่ฉันทำคือการสุ่มตัวอย่าง 3 พื้นผิวและแผนที่ผสมและรับสีโดยรวมจากพื้นผิวทั้งสามตามช่องสีจากแผนที่ผสมผสาน อย่างไรก็ตามฉันได้รับอัตราเฟรมลดลงมากเมื่อฉันลองมากกว่า 1 พื้นผิวฉันจะเปลี่ยนจาก 120+ fps เป็นต่ำกว่า 50 นี่คือรหัส HLSL ที่รับผิดชอบในการชะลอตัว: float3 ground = tex2D(GroundTex, multiTex).rgb; float3 stone = tex2D(StoneTex, multiTex).rgb; float3 grass = tex2D(GrassTex, multiTex).rgb; float3 blend = tex2D(BlendMapTex, blendMap).rgb; ฉันทำผิดหรือเปล่า? หากใครมีข้อมูลหรือเคล็ดลับเกี่ยวกับการสุ่มตัวอย่างพื้นผิวหรืออะไรก็จะดี ขอบคุณ

6
ตัวอย่างที่ดีของเอฟเฟกต์แบบมัลติพาส?
ใน XNA (และ Direct3D โดยทั่วไป AFAIK) แทนที่จะสร้างจุดสุดยอดและชิ้นส่วนแยกส่วนคุณรวมกลุ่มเฉดที่เกี่ยวข้องจำนวนมากไว้ใน 'เอฟเฟกต์' เมื่อคุณใช้เอฟเฟกต์คุณจะเลือก 'เทคนิค' (หรือวนซ้ำไปเรื่อย ๆ ) และจากนั้นแต่ละเทคนิคจะมีจำนวนรอบ คุณวนซ้ำผ่านแต่ละรอบที่เลือกจุดสุดยอดที่เกี่ยวข้องและ shader ส่วนและคุณวาดรูปทรงเรขาคณิต สิ่งที่ฉันอยากรู้เกี่ยวกับสิ่งที่คุณจะต้องผ่านหลายรอบเพื่อ? ฉันเข้าใจในช่วงต้นของ 3 มิติคุณมีหน่วยพื้นผิวเพียงหน่วยเดียวและจากนั้นคุณมี 2 และบ่อยครั้งที่ยังไม่เพียงพอหากคุณต้องการทำแผนที่สิ่งแวดล้อม แต่สำหรับอุปกรณ์ที่ทันสมัยแม้ในชั้นเรียนมือถือคุณสามารถลองพื้นผิว 8 ชิ้นขึ้นไปและทำการคำนวณการส่องสว่างได้มากเท่าที่คุณต้องการใน shader เดียว มีประสบการณ์มากขึ้นที่นี่สามารถนำเสนอตัวอย่างที่ใช้งานจริงของที่ต้องการการเรนเดอร์แบบมัลติพาสได้หรือไม่
9 xna  directx  shaders 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.