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

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

2
ตรวจสอบรูปแบบพื้นผิว OpenGL ที่สนับสนุนได้อย่างไร
ตัวอย่างเช่นวิธีตรวจสอบว่า videocard ของฉันไม่รองรับ "bgr8" และแปลงเป็นรูปแบบอื่นเช่น "rgba8" ในโหมดซอฟต์แวร์ UPDATE: ขออภัยในความสับสน คำถามนี้เพิ่มเติมเกี่ยวกับสถานการณ์เมื่อฉันตั้งค่าinternalFormatในglTexImage2Dเป็นอย่าง "bgra8" แต่ videodriver แปลงข้อมูลภายในเป็นรูปแบบอื่นเช่น "rgba8"

1
ฉันควรให้ตัวละครแต่ละตัวเป็น VBO ของตัวเองหรือฉันควรจะนำพวกเขาไปเป็น VBO ตัวเดียว?
ฉันทำเกม 3D คนแรก ฉันควรให้ตัวละครแต่ละตัวเป็น VBO ของตัวเองหรือฉันควรจะรวบรวมตัวละครทั้งหมดเป็น VBO ตัวเดียวหรือไม่? ข้อดี / ข้อเสียคืออะไร?
10 opengl  vbo 

5
OpenGL vs OGRE: ไหนดีที่สุดสำหรับมือใหม่? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันสนใจที่จะเข้าสู่การพัฒนาเกมและมีทักษะการเขียนโปรแกรม C / C ++ ที่ดี ฉันเคยลอง OGRE มาก่อนและฉันอยากรู้ว่าควรเรียนรู้ OGRE หรือ OpenGL เป็นจุดเริ่มต้นหรือไม่ จากความเข้าใจของฉัน OGRE เป็นเสื้อคลุมสำหรับ OpenGL และ DirectX ดังนั้นฉันควรเรียนรู้เกี่ยวกับ OGRE ฉันยังต้องเรียนรู้ OpenGL เพื่อพัฒนาเกมหรือไม่? นอกจากนี้บางคนชี้ให้ฉันเห็นการสอนที่ดีสำหรับ OpenGL ได้หรือไม่ ฉันพบว่า OGRE ได้รับการบันทึกไว้อย่างดี (ถึงแม้จะมาพร้อมกับการแจกจ่าย!) แต่สำหรับ OpenGL บทเรียนส่วนใหญ่ที่ฉันเข้ามานั้นล้าสมัยแล้ว
10 opengl  ogre 

4
คุณสมบัติที่ขาดหายไปจาก WebGL และ OpenGL ES
ฉันเริ่มใช้ WebGL และรู้สึกยินดีกับความง่ายในการใช้ประโยชน์จากประสบการณ์ OpenGL ของฉัน (และโดยการขยาย OpenGL ES) อย่างไรก็ตามความเข้าใจของฉันเป็นดังนี้: OpenGL ES เป็นส่วนหนึ่งของ OpenGL WebGL เป็นส่วนหนึ่งของ OpenGL ES ถูกต้องหรือไม่สำหรับทั้งสองกรณี? ถ้าเป็นเช่นนั้นมีแหล่งข้อมูลสำหรับการตรวจสอบคุณสมบัติที่หายไปหรือไม่ ตัวอย่างเช่นหนึ่งคุณลักษณะที่ขาดหายไปที่น่าสังเกตคือและglPushMatrix glPopMatrixฉันไม่เห็นสิ่งเหล่านั้นใน WebGL แต่ในการค้นหาของฉันฉันไม่พบพวกเขาอ้างอิงในเนื้อหา OpenGL ES

3
แสงสว่างในโลก Minecraftian
Minecraft เป็นเกมที่มีพื้นฐานมาจากความสูงและใช้ข้อมูล heigtmap เพื่อทำให้โลกสว่าง จากความเข้าใจของฉันจุดสูงสุดในแผนผังความสูงคือจุดสิ้นสุดของพื้นที่ที่ได้รับผลกระทบจากแสงแดด ทุกสิ่งที่อยู่ด้านบนนั้นสว่างไสวด้วยแสงแดดทุกอย่างด้านล่างที่เพิ่งได้รับอิทธิพลจากแสงใกล้เคียงในรัศมี 8 ช่วงตึก ดังนั้นหากคุณมีเกาะลอยอยู่ด้านบนของโลกของคุณทุกอย่างด้านล่างที่จะถูกมองว่าเป็นถ้ำ เมื่อแสงสองดวงมีอิทธิพลต่อจุดเดียวกันแสงที่สว่างกว่าจะเป็นฝ่ายชนะ (ไม่แน่ใจเกี่ยวกับเรื่องนั้น) ทั้งสองวิธีมีปัญหาสองสามอย่างเกี่ยวกับรูปแบบการจัดแสง minecrafts: อย่างแรกเลยถ้าโลกของคุณไม่มีแผนผังความสูงมันจะยากกว่าที่จะคิดออกว่าควรจะปล่อยแสงแดดออกมาอย่างไร วิธีง่าย ๆ คือสมมติว่าโลกนี้ (ในกรณีของฉัน) เป็นหินลอยและจากนั้นสำรวจแต่ละแกนจากทั้งสองทิศทางและหาจุดที่หินเริ่มต้นและสิ้นสุด แต่สิ่งนี้ไม่ได้ขจัดปัญหาอย่างเต็มที่เนื่องจากรอยบุบในหินไม่ควรอยู่ในความมืด Minecraft นั้นจะทำการแคชข้อมูลแสงในส่วนของมันพร้อมกับข้อมูลเกี่ยวกับเนื้อหาของบล็อก ดังนั้นถ้าโลกมีการปรับเปลี่ยนแสงจะต้องมีการปรับปรุง น่าเสียดายที่กระบวนการยังค่อนข้างช้าในการอัปเดตและเมื่อมีการเปลี่ยนแปลงของแสงอย่างรวดเร็วคุณจะเห็นความล่าช้าของแสงด้านหลัง โดยเฉพาะอย่างยิ่งหากมีการเปลี่ยนแปลงบล็อกจำนวนมาก (ภายหลังพระอาทิตย์ตก ฯลฯ ) และคุณไม่ได้ใช้คอมพิวเตอร์ที่เร็วที่สุด (หรือ Java บน Mac) จากความเข้าใจที่ จำกัด ของฉันเกี่ยวกับแสงกราฟิก 3D โลกอย่าง Minecraft ไม่ควรเป็นปัญหาที่ใหญ่ที่สุด คุณจะจัดการกับปัญหาอย่างไร ฉันคิดว่าข้อกำหนดขั้นพื้นฐานสำหรับการให้แสงในโลก voxel น่าจะเป็น อัปเดตเร็วพอที่จะเกิดขึ้นในเฟรมเดียว หนึ่งอาจทำแสงสว่างในอุปกรณ์กราฟิกและดาวน์โหลดข้อมูลแสงที่เปลี่ยนแปลงไปยัง RAM หลัก ข้อมูลแสงจะต้องพร้อมใช้งานอย่างรวดเร็วสำหรับตรรกะของเกมหลักดังนั้นจึงไม่ได้ขึ้นอยู่กับอุปกรณ์กราฟิกทั้งหมด: การให้เหตุผล: …
10 opengl  maps  lighting 

2
เกม 2D และ OpenGL ที่ทันสมัย
Preconcepts ตกลงดังนั้นสิ่งที่ฉันรวบรวมมาคือ: อย่าใช้ไปป์ไลน์ที่คงที่ (เลิกใช้แล้วหรือกำลังจะเลิกใช้งาน) vbos เก็บ "โมเดลวัตถุ" (n จุดสุดยอดข้อมูลส่วนใหญ่) vaos อธิบายว่าข้อมูลถูกวางไว้อย่างไรเพื่อให้การโทรรู้ว่าส่วนใดของ vbo แต่ละชนิดสำหรับข้อมูลจุดยอด (หนึ่ง vao สามารถอ้างถึง vbos หลาย ๆ ตัวได้ตรงกันข้ามเป็นเรื่องยาก) การเรียกแบบดึงแต่ละครั้งจะส่งข้อมูลจุดสุดยอดไปยังตัวแปลงข้อมูล ฉันเห็น 3D (ไม่บังคับ) จากข้อมูลเหล่านี้ฉันเห็นได้ว่าการวาดวัตถุที่ซับซ้อน 3D เป็นสิ่งที่ดีมาก ๆ ด้วย OpenGL ที่ทันสมัย โดยทั่วไปคุณจะโหลดโมเดลวัตถุ (อาจมาจาก Blender หรือซอฟต์แวร์ที่คล้ายคลึงกันอื่น ๆ ) ลงใน VBOs ที่มีพิกัดโลคัลและจากนั้นคุณเพียงแค่จัดหาพารามิเตอร์ shader ที่แตกต่างกัน (ออฟเซ็ต) ให้แต่ละอินสแตนซ์ของวัตถุ ปัญหา / คำถาม ในปัญหา 2D และลำดับความสำคัญแตกต่างกันอย่างสิ้นเชิงแม้ว่า …
10 opengl  2d  vbo  vao 

2
วิธีที่ดีที่สุดในการอัปเดตเครื่องแบบ shader คืออะไร?
อะไรคือวิธีที่ได้รับการยอมรับมากที่สุดในการรักษาเมทริกซ์ของ shader ให้ทันสมัยและทำไม? ตัวอย่างเช่นในตอนนี้ฉันมีShaderชั้นเรียนที่จัดเก็บด้ามจับไปยังโปรแกรมและชุดเครื่องแบบ GLSL ทุกครั้งที่ฉันขยับกล้องฉันจะต้องผ่านเมทริกซ์มุมมองใหม่ไปยัง shader จากนั้นวัตถุทุกอย่างในโลกที่แตกต่างกันฉันจะต้องผ่านเมทริกซ์โมเดลไปยัง shader สิ่งนี้ จำกัด ฉันอย่างรุนแรงเนื่องจากฉันไม่สามารถทำอะไรได้หากไม่สามารถเข้าถึงวัตถุ shader นั้นได้ ฉันคิดว่าจะสร้างShaderManagerชั้นเรียนเดี่ยวที่รับผิดชอบการถือร่มเงาที่ใช้งานอยู่ทั้งหมด จากนั้นฉันก็สามารถเข้าถึงสิ่งนั้นได้จากทุกที่และวัตถุในโลกไม่จำเป็นต้องรู้เกี่ยวกับสิ่งที่ shaders กำลังใช้งานอยู่เพียงเพื่อให้พวกเขาShaderManagerรู้เมทริกซ์ที่ต้องการ แต่ฉันไม่แน่ใจว่านี่เป็นวิธีที่ดีที่สุดและอาจมีปัญหาบางอย่าง จะเกิดขึ้นจากการใช้วิธีการนี้
10 opengl  shaders  glsl 

1
วิธีการเปลี่ยนสีของพิกเซลพื้นหลัง
ฉันกำลังเขียนเกมและแก้ไขแผนที่โดยใช้ Java และ jMonkeyEngine ในเครื่องมือแก้ไขแผนที่ฉันมีแปรงทำโดย wireframed sphere ปัญหาของฉันคือ: ฉันต้องการให้มันปรากฏทุกที่ดังนั้นฉันต้องการกลับสีของพิกเซล "หลัง" แปรงนี้ ฉันอยากจะทำมันด้วย fragment shader (GLSL) แต่ฉันไม่รู้วิธีรับสีของพิกเซลนี้

1
ความแตกต่างระหว่าง opengl 3 และ opengl 4
ฉันเพิ่งเริ่มต้นกับการเขียนโปรแกรมเกมและฉันต้องการเริ่มเรียนรู้ OpenGL ฉันพบบทเรียนที่ยอดเยี่ยมตั้งแต่เริ่มต้นกับ opengl 3 และฉันสงสัยว่ามีความแตกต่างอย่างมากระหว่าง openGL 3 และ openGl 4 หรือฉันควรถามว่า openGL 4 ทำให้ openGL 3 ล้าสมัยหรือไม่ฉันสามารถเริ่มต้นด้วย openGL 3 แล้วฉันจะย้ายไปที่ openGL 4 ได้ไหม?
10 opengl 

1
ไลบรารีแอนิเมชันโมเดล c / c ++ ใดสำหรับ OpenGL [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ฉันค่อนข้างใหม่ในการพัฒนาเกมเล่นกับ xna มาก่อนและเพิ่งเรียนรู้ OpenGL & c ตอนนี้และฉันสนใจที่จะรู้ว่ามีไลบรารี่แอนิเมชั่นโมเดล c / c ++ อยู่ไหนและคุณอยากจะแนะนำอะไร? ฉันยังไม่มีรูปแบบเฉพาะในใจ แต่อาจเป็นรูปแบบที่สนับสนุนโดยเครื่องมือสร้างแบบจำลองฟรีเช่น Blender
10 opengl  c++  models  c 

5
ทำไมฉันไม่สามารถใช้โอเปอเรเตอร์ '> =' กับ Vector3s ได้
ฉันพยายามที่จะได้รับรูปสี่เหลี่ยมผืนผ้าย้ายไปมาระหว่างสองตำแหน่งที่ผมพูดถึงและ_positionA ทั้งสองประเภท_positionB Vector3สี่เหลี่ยมผืนผ้าเคลื่อนไหวได้ดี อย่างไรก็ตามเมื่อมันมาถึง_positionBมันจะไม่เคลื่อนที่ในทิศทางตรงกันข้ามเหมือนอย่างที่ควร ฉันกลับไปที่โค้ดเพื่อดู ฉันมาถึงข้อสรุปว่าเป็นวัตถุย้ายที่ifงบในรหัสพลาดเฟรมซึ่งในตำแหน่ง rects _positionBเท่ากับ ฉันตัดสินใจที่จะปรับเปลี่ยนรหัสไปในทิศทางที่ตรงกันข้ามถ้าตำแหน่ง rects คือมากกว่าหรือเท่ากับ _positionBรหัสของฉันไม่ยาวเกินไปดังนั้นฉันจะแสดงด้านล่าง: using UnityEngine; using System.Collections; public class Rectangle : MonoBehaviour { private Vector3 _positionA = new Vector3(-0.97f, -4.28f); //Start position private Vector3 _positionB = new Vector3(11.87f, -4.28f); //End position private Transform _rect_tfm; private bool _atPosA = false, _atPosB = …
9 unity  c#  vector  mathematics  vector  matrix  unity  c#  transformation  java  3d  terrain-rendering  shading  ios  opengl-es  opengl  rendering  optimization  python  scripting  minecraft-modding  modding  pc  3d-meshes  mesh  culling  point-cloud  networking  interpolation  mathematics  game-design  ai  game-mechanics  animation  unreal-4  skeletal-animation  3dsmax  unity  c#  3d  opengl  c++  textures  unity  ide  cocos2d  cocos2d-x-js  unity  c#  mono  il2cpp  c++  game-loop  timer  linux  flash  actionscript-3  java  glsl  c++  vector  entity-component  c++  directx11  windows  visual-studio  libgdx  mouse  unity  c#  architecture  storage  unity  c#  rotation  coordinates  quaternion  vrpn  movement  vector  unreal-4  unity  shaders  unity  gui  text  bug  shooter  3d  animation  rendering  voxels  c++  mmo  multithreading  linux  textures  procedural-generation  terrain-rendering  multiplayer  mmo  game-state  java  android  libgdx  opengl  procedural-generation  unity  gui  3d  animation  tools  geometry-shader  mobile  advertisements  unity  c#  animation  scripting  unity  animation  unityscript  coroutines  unity  shaders  lighting  camera 

1
ฉันจะใช้ LOD เรขาคณิตแบบไดนามิกบน OpenGL ได้อย่างไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดเมื่อปีที่แล้ว ฉันพยายามใช้ LOD เพื่อเพิ่มประสิทธิภาพของเกม ผมพบว่าการกวดวิชาที่ดีมาก แนวคิดพื้นฐานที่ฉันคิดว่าฉันเข้าใจคือ: ระยะทางจากกล้องไปยังวัตถุตรวจสอบระดับ LOD ที่เหมาะสมจากนั้นแสดงวัตถุด้วย "ปริมาณที่เหมาะสมของอินสแตนซ์" ฉันจะใช้สิ่งนั้นได้อย่างไร โค้ดตัวอย่างที่ให้มาเป็นปริศนาสำหรับฉัน ... บางคำถาม: นี่เป็นวิธีที่ดีในการใช้ LOD หรือไม่? ใครบางคนช่วยอธิบายรายละเอียดฉันได้อย่างไรฉันต้องนำไปใช้อย่างไรพร้อมกับข้อความค้นหาและอื่น ๆ ... ฉันกำลังแสดงวัตถุทั้งหมดของฉันด้วย GL11.glDrawElements(GL11.GL_TRIANGLES, model.getRawModel().getVertexCount(), GL11.GL_UNSIGNED_INT, 0); GL_POINTSการใช้โค้ดตัวอย่าง ฉันสามารถใช้มันได้ด้วยGL_TRIANGLESหรือไม่
9 opengl  java 

3
ฉันจะเล่นไฟล์วิดีโอใน OpenGL ได้อย่างไร
มีห้องสมุดที่จะให้ฉันโหลดไฟล์ภาพยนตร์และเล่นในแอปพลิเคชั่น OpenGL หรือไม่? หรืออาจเป็นเพียงตัวอย่างรหัสที่มีคนโกหก? ฉันกำลังใช้ GLUT เช่นกันหากนั่นสร้างความแตกต่าง ฉันเดาว่ารูปแบบไฟล์ไม่สำคัญแม้ว่าปัจจุบันภาพยนตร์ของฉันอยู่ในรูปแบบ AVI
9 opengl  video 

3
การใช้ความละเอียดบัฟเฟอร์ความลึกเต็มรูปแบบสำหรับการแสดงผล 2D
ฉันกำลังทำงานกับโหมดแสดงภาพแบบด้านหน้าไปด้านหลังสำหรับเครื่องยนต์ 2D โดยใช้การฉายภาพแบบออโธกราฟฟิค ฉันต้องการใช้บัฟเฟอร์ความลึกเพื่อหลีกเลี่ยงการถอนเงินมากเกินไป ฉันมีบัฟเฟอร์ความลึก 16 บิตกล้องที่ Z = 100 ดูที่ Z = 0, z ใกล้เคียงคือ 1 และ zFar คือ 1,000 แต่ละสไปรต์ที่แสดงผลจะตั้งค่าพิกัด Z ของมันเป็นค่าที่ห่างไกลมากขึ้น อะไรก็ตามที่อยู่ด้านล่าง อย่างไรก็ตามฉันทราบวิธีการที่ตำแหน่ง Z ลงท้ายด้วยค่าบัฟเฟอร์ Z คือไม่ใช่เชิงเส้น ฉันต้องการใช้ความละเอียดเต็มรูปแบบของบัฟเฟอร์ความลึก 16 บิตนั่นคืออนุญาตให้มีค่าที่ไม่ซ้ำกัน 65536 ชิ้น ดังนั้นสำหรับทุก sprite ที่เรนเดอร์ฉันต้องการเพิ่มตำแหน่ง Z ไปยังตำแหน่งถัดไปเพื่อให้สัมพันธ์กับค่าบัฟเฟอร์ความลึกที่ไม่ซ้ำกันถัดไป กล่าวอีกนัยหนึ่งฉันต้องการเปลี่ยนดัชนีที่เพิ่มขึ้น (0, 1, 2, 3 ... ) ของสไปรต์ที่ถูกดึงเข้าไปในตำแหน่ง Z ที่เหมาะสมสำหรับแต่ละสไปรต์เพื่อให้มีค่าบัฟเฟอร์ความลึกที่ไม่ซ้ำกัน …

1
การจับคู่โทนและการปรับแต่งตา - สีอ่อนและภาพที่เข้มขึ้น
ฉันกำลังพยายามใช้การทำแผนที่โทนพร้อมกับการปรับตาและ HDR ที่จริงฉันใช้งานไปแล้ว แต่ฉันไม่พอใจกับผลลัพธ์และฉันคิดว่าฉันทำอะไรผิด ภาพสุดท้ายของฉัน (ก่อนประมวลผลภายหลัง) ฉันเก็บไว้ในครึ่งพื้นผิวลอย ฉันมีพื้นผิวของตัวช่วย 2 ตัว อันแรกเก็บค่าความส่องสว่างและค่าเฉลี่ยของ avg, min และ max ไว้ใน mip-map ครั้งล่าสุด ร้านที่สองปรับมูลค่าซึ่งคำนวณเป็น: prevLum + (avgLum - prevLum) * (1.0 - exp2(-adaptionRate)) เมื่อ prevLum เป็นค่าการปรับก่อนหน้านี้ (ขนาดของพื้นผิวนี้คือ 1x1) พื้นผิวความสว่างของการบันทึกเป็นรูปแบบ R8B8G8 และอันที่สองคือ R8 ในบทเรียนฉันเห็นว่ามีการใช้พื้นผิวแบบครึ่งลอย แต่ในกรณีของฉันฉันมีภาพที่สว่างเกินไป (เกือบขาว) ในโปรแกรมประมวลผลหลังการขั้นสุดท้ายฉันใช้ค่าทั้งหมดเพื่อรับการปรับตาและการจับคู่โทนโดยใช้รหัสนี้: float autokey(in float lum) { return 1.03 - 2.0 …

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