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

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

1
ทำไมรูปเรขาคณิตนี้ทำให้โปรแกรมของฉันช้าลงอย่างมาก?
ฉันมีโปรแกรม OpenGL และฉันแสดงภูมิประเทศ ฉันแทนที่จุดยอดในบัฟเฟอร์จุดสุดยอดและไม่ได้ระบายสีพวกมันใน shader ส่วนเลย ฉันกำลังเพิ่มรูปเรขาคณิตส่วนหนึ่งทีละส่วน ก่อนที่ฉันจะเพิ่ม geometry shader เมื่อฉันเพิ่งจะเขียนโปรแกรมส่วนขั้นตอนการแรเงาและจุดยอดของท่อฉันได้รับ framerates ประมาณ 30+ พอฉันไม่สามารถสังเกตเห็นความไม่แน่นอนใด ๆ หลังจากเพิ่มรูปเรขาคณิตฉันได้รับประมาณ 5 เฟรมต่อวินาที ทำไม? นี่คือความสมบูรณ์ของเรขาคณิต shader: #version 420 layout (triangles) in; layout (triangle_strip, max_vertices = 3) out; void main() { for (int i = 0; i < gl_in.length(); i++) { gl_Position = gl_in[i].gl_Position; EmitVertex(); …
27 opengl  glsl 

3
ทีมป้องกันการเขียนทับทำงานในไฟล์ต้นฉบับได้อย่างไร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว มันเป็นไปได้สำหรับฉันที่มีหลายคนที่กำลังทำงานอยู่ในขณะเดียวกันเช่นเอ็นจิ้นเกม สมมติว่านักพัฒนาคนหนึ่งกำลังทำงานAudio.cppและนักพัฒนาที่สองก็กำลังทำงานอยู่Audio.cppสิ่งนี้จัดการโดยทั่วไปในทีมขนาดใหญ่เพื่อต่อสู้กับการเขียนทับได้อย่างไร (ในคำอื่น ๆ ที่จะหยุดสองนักพัฒนาจากการเปิดไฟล์จนกว่านักพัฒนาคนหนึ่งจะเสร็จสิ้น)
26 project-management  version-control  teamwork  java  2d  collision-detection  vector  collision-resolution  unity  directx  directx11  directx10  xna  ios  monogame  windows-phone-8  xamarin  design-patterns  oop  xna  collision-detection  collision-resolution  bounding-boxes  rotation  collision-detection  mathematics  javascript  algorithm  separating-axis-theorem  xna  2d  monogame  image  xna  directx  graphics  performance  opengl  2d  3d  c++  directx11  unity  c#  scale  c#  xna  collision-detection  collision-resolution  leaderboards  scoring  glsl  srgb  tilemap  three.js  tiled  unity  physics  xml  dialog-tree  xna  c#  .net  opengl  lwjgl  vbo  physics  graphics  procedural-generation  simulations  water  opengl  java  textures  lwjgl  frame-buffer  unity  unity  2d  collision-detection  collision-resolution  trigonometry  java  android  libgdx  xna  c#  frame-rate  c++  unreal-4  procedural-generation  java  graphics  lwjgl  slick  c++  software-engineering 

1
Freeglut กับ SDL เทียบกับ GLFW
ฉันต้องพอร์ตโครงการเกมของฉันจาก Android (เขียนใน C, OpenGL ES 2.0 ขอบคุณ NDK) ไปยังแพลตฟอร์ม Windows และ Linux แน่นอนว่าฉันจะต้องเขียนโค้ดที่ขึ้นอยู่กับบางแพลตฟอร์ม แต่ตอนนี้ฉันติดอยู่กับคำถามว่าไลบรารี่สำหรับการสร้าง OpenGL และการใช้งานการจัดการอินพุท googling ที่รวดเร็วทำให้ฉันได้รับผู้สมัคร 3 คน: 1) Freeglut - เขียนใหม่และฟรีดี GLUT เก่า 2) SDL - รู้จักมากที่สุดหนึ่ง lib ที่ใช้ในหลาย ๆ เกม 3) GLFW - ชนิดใหม่ แต่ง่ายและใช้งานได้ ฉันเพิ่งใหม่ในการพัฒนาพีซีและไม่เห็นความแตกต่างที่สำคัญเกิดขึ้นกับพวกเขา คุณสามารถช่วยฉันเลือกอันไหนได้บ้าง? ฉันต้องการเพียงแค่อินพุตเมาส์ / คีย์บอร์ดและการสร้างบริบท OpenGL อย่างชัดเจนและฉันจะใช้ GLEW เพื่อเข้าถึง OpenGL …
26 opengl  windows  linux 

3
สำหรับการเรนเดอร์ voxel จะมีประสิทธิภาพมากขึ้น: VBO ที่สร้างไว้ล่วงหน้าหรือ shader เรขาคณิต
ด้วยอาร์เรย์ voxel ที่ค่อนข้างคงที่สิ่งที่มีประสิทธิภาพมากขึ้น: การใช้ CPU เพื่อสร้าง VBO ล่วงหน้าเพื่อแสดงใบหน้าของ voxel (โดยไม่สนใจรูปแบบการแสดงผลขั้นสูงเช่นการเดินขบวนลูกบาศก์ในตอนนี้) หรือการใช้เรขาคณิต shader บน GPU เพื่อสร้าง เผชิญกับการบิน? ฉันไม่ได้กังวลเกี่ยวกับการอัปเดตการเปลี่ยนแปลง voxels แต่แน่นอนว่าเป็นประโยชน์ของรุ่น GPU เนื่องจากคุณไม่จำเป็นต้องสร้าง VBO ใหม่ นอกจากนี้วิธีการ GS ยังให้ความรู้สึกทันสมัยยิ่งขึ้น :) ในทางกลับกันฉันไม่ได้ดูรายละเอียดว่า GS ใช้งานได้จริงกับท่อส่งแรสเตอร์ใน GPU ที่ทันสมัยได้อย่างไร มันส่งออกจุดยอดในกระแสแคชหรือเป็นจุดยอดที่เขียนไปยังหน่วยความจำ GPU ปกติในระหว่าง? ถ้าเป็นอย่างหลังการสร้างแบบทันทีก็สามารถลดแบนด์วิดท์และพลังการประมวลผลจากส่วนที่เหลือของงาน GPU ที่ฉันเดาแล้วมันจะมีประโยชน์มากขึ้นในการทำบนซีพียู ..

9
เคล็ดลับการเพิ่มประสิทธิภาพ OpenGL [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา คุณมีเคล็ดลับหรือกลอุบายอะไรบ้างเมื่อพูดถึงการทำให้ OpenGL มีประสิทธิภาพมากขึ้น

3
สถานะใดที่ถูกเก็บไว้ใน OpenGL Vertex Array Object (VAO) และฉันจะใช้ VAO อย่างถูกต้องได้อย่างไร
ฉันสงสัยว่าสถานะใดที่เก็บไว้ใน OpenGL VAO ฉันเข้าใจว่า VAO มีสถานะที่เกี่ยวข้องกับข้อมูลจำเพาะของจุดยอดของจุดยอดบัฟเฟอร์ (แอตทริบิวต์ใดที่อยู่ในบัฟเฟอร์และบัฟเฟอร์ใดถูกผูกมัด ... ) เพื่อให้เข้าใจการใช้ VAO ที่ถูกต้องได้ดีขึ้นฉันต้องการทราบว่าพวกเขามีสถานะเป็นอย่างไร ฉันควรใช้ VAO อย่างไร จากตัวอย่างง่ายๆฉันเข้าใจว่าการใช้งาน VAO ที่ถูกต้องมีดังนี้: ติดตั้ง Generate VAO BindVAO ---- Specify vertex attributes ---- Generate VBO's ---- BindVBO's -------- Buffer vertex data in VBO's ---- Unbind VBO's Unbind VAO การกระทำ Bind VAO ---- Draw Unbind VAO จากนี้ฉันคิดว่าอย่างน้อยการผูกบัฟเฟอร์จุดสุดยอดและข้อมูลจำเพาะคุณลักษณะจุดสุดยอดจะถูกเก็บไว้ใน …
25 opengl  vao 

5
ทำไมเอ็นจิ้นอย่าง Unity3D จึงเน้นย้ำกับไลบรารี่ดั้งเดิมอย่าง OpenGL สำหรับผู้เริ่มต้น [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการ4 ปีที่แล้ว ฉันเป็นแค่มือใหม่ในเกมสามมิติแพลตฟอร์มที่ฉันชอบคือ Android ฉันโพสต์คำถามในฟอรัมอื่นเกี่ยวกับ "สิ่งที่จะใช้: OpenGL หรือ Unity3d" พวกเขาเน้น Unity3D และใช้คุณสมบัติและเครื่องมือในตัวซึ่งฉันจะต้องเขียนรหัสด้วยตัวเองถ้าฉันต้องใช้ OpenGL แต่บางคนก็บอกว่าเกมที่ซับซ้อนส่วนใหญ่ต้องการเอ็นจิ้นกำหนดเอง ทำไมฉันถึงต้องใช้เอ็นจิ้นอย่าง Unity3D บน OpenGL
25 opengl  android  unity 

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

1
เกมของฉันดูเหมือนจะไม่เข้ากันกับซอฟต์แวร์การบันทึก สิ่งใดที่ทำให้เกิดสิ่งนี้
ฉันเพิ่งจบโครงการ Game-Dev เล็ก ๆ สำหรับมหาวิทยาลัยและฉันต้องการบันทึกวิดีโอเพื่อติดตามผลงานของฉัน (ในกรณีที่พวกเขาไม่สามารถให้แหล่งข้อมูลของฉันทำงานได้) โดยทั่วไปเกมของฉันไม่ทำงานเลยเมื่อ FRAPS หรือ Bandicam พยายามที่จะแนบมันฉันได้รับหน้าจอสีดำและมีกระแสข้อความ GL INVALID OPERATION จากรหัสรายงานข้อผิดพลาดของฉัน Dxtory ดูเหมือนจะไม่สามารถเชื่อมต่อกับมันได้อย่างถูกต้องเลยมันไม่ได้แสดงว่าเป็นตัวนับ FPS หรืออะไรก็ตาม ตรรกะเกมของฉันดูเหมือนว่าจะทำงานอย่างถูกต้องจากร่องรอยการตรวจแก้จุดบกพร่องมันก็ดูเหมือนว่าทุกสาย gl ห้องสมุดโทรทำลาย ฉันไม่รู้จำนวนมากเกี่ยวกับวิธีการทำงานของโปรแกรมเหล่านี้ดังนั้นฉันไม่รู้จริง ๆ ว่าฉันควรทำอย่างไรเพื่อทำให้เกิดสิ่งนี้ ฉันได้ยินว่าพวกเขาอ่านจากบัฟเฟอร์เฟรมของ OpenGL ดังนั้นฉันอาจทำอะไรผิดพลาดที่นั่นหรือ ฉันให้ GLFW และ GLEW ทำการเริ่มต้นระดับต่ำทั้งหมด แต่ฉันได้บันทึกโครงการที่ประสบความสำเร็จด้วยซอฟต์แวร์การตั้งค่าและการบันทึกเดียวกัน โดยพื้นฐานแล้วมีใครเคยเจอเรื่องแบบนี้มาก่อนหรือคุณรู้อะไรเกี่ยวกับวิธีการทำงานของโปรแกรมเหล่านี้ที่สามารถบอกสาเหตุของปัญหาได้หรือไม่

7
วิธีการรับประสบการณ์ PS3 / Xbox 360 โดยไม่ต้องเข้าถึงชุด Dev?
ฉันเป็นโปรแกรมเมอร์เกมรุ่นที่พยายามเข้าสู่อุตสาหกรรมการเขียนโปรแกรมสำหรับ PS3, Xbox 360 ปัญหาหลักที่ฉันเห็นคือต้องแสดงทักษะของฉันกับนายจ้างที่มีศักยภาพ แต่ไม่สามารถเข้าถึงชุด Dev สำหรับ PS3 หรือ Xbox 360 ได้ สิ่งนี้เป็นไปไม่ได้โดยตรง คำถามของฉันคืออะไรทางเลือกที่ดีที่สุดในการแสดงทักษะให้นักพัฒนาคอนโซลของฉันคืออะไร การเขียนโปรแกรม C ++ ใน DirectX สำหรับ Windows ดูเหมือนจะใกล้เคียงกับการแสดงทักษะการเขียนโปรแกรม Xbox 360 และการเขียนโปรแกรม C ++ ใน OpenGL นั้นค่อนข้างใกล้เคียงกับการแสดงทักษะการเขียนโปรแกรม PS3 น่าเสียดายที่มันดูเหมือนว่าจากการวิจัยเว็บราวกับว่าทั้ง Xbox 360 และ PS3 มีห้องสมุดที่เป็นของตัวเองจริง ๆ ดังนั้นจึงดูเหมือนว่าจะไม่ได้พยายามอย่างเต็มที่ที่จะเกิดผล 100% วิธีนี้ดูใกล้เคียงที่สุด แต่ใช้เวลามากที่สุด รวมทั้งคุณไม่ได้ทำอะไรเลยบนคอนโซล ในทางกลับกันการเขียนโปรแกรมใน XNA มีประโยชน์กับเกมของคุณจริง ๆ บนคอนโซลแม้ว่าฉันจะได้รับความประทับใจว่านี่คือสิ่งที่มองว่าไม่ใช่ "ของจริง" …

2
กล้องเทียบกับวิวพอร์ต
ฉันไม่มีความเข้าใจที่ชัดเจนว่าอะไรคือความแตกต่างระหว่างพิกัดกล้องกับพิกัดวิวพอร์ต ใครช่วยอธิบายหน่อยได้ไหม

1
กลิ้งกราฟฉากของฉันเอง
สวัสดีการพัฒนาเกม SE! ฉันคลานผ่าน OpenGL ด้วยความหวังในการสร้างเอ็นจิ้นเกมที่เรียบง่ายและมีน้ำหนักเบามาก ฉันมองว่าโครงการนี้เป็นประสบการณ์การเรียนรู้ที่อาจสร้างรายได้เพียงเล็กน้อยในตอนท้าย แต่จะสนุกด้วยวิธีใดวิธีหนึ่ง จนถึงตอนนี้ฉันใช้ GLFW เพื่อรับ I / O พื้นฐาน, หน้าต่าง (ด้วยคีย์เต็มหน้าจอ F11 ที่สวยงามมาก) และแน่นอนว่าเป็นบริบทของ OpenGL ฉันยังใช้ GLEW เพื่อแสดงส่วนขยาย OpenGL ที่เหลือเนื่องจากฉันใช้ Windows และฉันต้องการใช้ OpenGL 3.0 ขึ้นไปทั้งหมด ซึ่งพาฉันไปที่กราฟของฉาก ในระยะสั้นฉันต้องการที่จะม้วนของตัวเอง การตัดสินใจครั้งนี้เกิดขึ้นหลังจากได้ดู OSG และอ่านบทความสองสามฉบับเกี่ยวกับวิธีที่แนวคิดของกราฟฉากกลายเป็นบิดงอและหัก หนึ่งบทความดังกล่าวอธิบายว่ากราฟฉากได้พัฒนาเป็น ... จากนั้นเราเพิ่มสิ่งพิเศษทั้งหมดนี้เข้าไปเช่นเครื่องประดับที่แขวนอยู่บนต้นคริสต์มาสยกเว้นว่าเครื่องประดับบางชิ้นเป็นสเต็กที่ชุ่มฉ่ำและบางส่วนก็เป็นวัวที่ยังมีชีวิตอยู่ ตามการเปรียบเทียบฉันต้องการสเต็กเนื้อของกราฟฉากควรเป็นอะไรโดยไม่ต้องใส่สายรหัสพิเศษหรือวัวทั้งหมด ดังนั้นในใจฉันพบว่าตัวเองสงสัยว่ากราฟซีนควรเป็นอะไรและควรใช้กราฟฉากง่าย ๆ อย่างไร? นี่คือสิ่งที่ฉันมี ... ผู้ปกครองหนึ่งคนต้นไม้ n-children หรือ DAG ซึ่ง ... …
23 opengl  3d  scene-graph 

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

1
วิธีการ LOD ที่ดีที่สุดสำหรับการเรนเดอร์ดาวเคราะห์
ฉันกำลังทำวิทยานิพนธ์ของฉันมันเป็นเครื่องมือในการแสดงภูมิประเทศขนาดดาวเคราะห์ ฉันยังทำการค้นคว้าเสร็จและพบสิ่งต่าง ๆ มากมายเกี่ยวกับเรื่องนี้ปัญหาคือฉันไม่สามารถตัดสินใจได้ว่าควรใช้วิธีใดในระดับรายละเอียด (LOD) ฉันรู้เกี่ยวกับ geomipmapping, geometry clipmaps (GPU) และ chunked LOD โดย Ulrich ที่ทำงานได้ดีบนภูมิประเทศขนาดใหญ่และสามารถใช้ในการเรนเดอร์ 6 หน้าของลูกบาศก์แล้ว "spherify" cube ด้วยวิธีนี้และฉันเข้าใจวิธีการใช้ทั้งหมด วิธีการเหล่านี้ใน GPU โดยใช้ C ++ / OpenGL / GLSL (ใช้วิธีการเช่น ROAM หรือวิธีอื่น ๆ ที่ไม่ได้ใช้คิวบ์ไม่อยู่ในมือฉันเพราะการทำพื้นผิวเป็นเรื่องเจ็บปวด) นอกจากนี้เมื่อเร็ว ๆ นี้ฉันได้เข้าสู่การสอนเกี่ยวกับการเรนเดอร์ภูมิประเทศโดยใช้เทสเซลเลชันเชดเดอร์ที่นี่ ดังนั้นฉันไม่มีเวลาที่จะใช้วิธีการทั้งหมดและดูว่าวิธีใดดีที่สุดและเหมาะสมกว่าสำหรับระดับดาวเคราะห์และฉันขอให้ที่นี่เพื่อดูว่ามีคนทำการเปรียบเทียบแบบนี้และช่วยฉันตัดสินใจว่าวิธีใด ฉันควรติดตั้งและใช้งาน (ผู้สอนของฉันเป็นบ้าและอยากให้ฉันทำอะไรกับ icosahedron แต่ฉันไม่เข้าใจวิธีการนั้นยกเว้นว่าใช้ ROAM) อย่างไรก็ตามหากคุณสามารถช่วยฉันตัดสินใจหรือมีข้อเสนอแนะหรือวิธีการอื่นใดฉันจะขอบคุณจริงๆ เงื่อนไขหนึ่งก็คือวิธีการนั้นควรจะสามารถใช้งานด้าน GPU (อย่างน้อยที่สุด) เพื่อป้องกันปัญหาคอขวดของ CPU …

1
คุณจะใช้ความคลาดสีอย่างไร?
คุณจะใช้ผลของความคลาดเคลื่อนสีกับเฉดสีได้อย่างไร? การเรนเดอร์ของโลกที่มีระยะโฟกัสที่แตกต่างกันสำหรับแต่ละสีจะแก้ปัญหาได้หรือไม่
22 opengl 

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