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

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

3
Vulkan คืออะไรและแตกต่างจาก OpenGL อย่างไร
Khronos Group (ร่างมาตรฐานหลัง OpenGL) เพิ่งประกาศVulkan : Vulkan เป็น API แบบเปิดรุ่นใหม่สำหรับการเข้าถึงกราฟิกและการคำนวณบน GPU ที่ทันสมัย การออกแบบแบบภาคพื้นซึ่งก่อนหน้านี้เรียกว่า OpenGL Initiative ยุคหน้าให้แอปพลิเคชั่นควบคุมการเร่งความเร็วของ GPU โดยตรงเพื่อประสิทธิภาพและการคาดการณ์สูงสุด หน้าของพวกเขาค่อนข้างค่อนข้างเป็นตลาด / ศัพท์แสง - หนักเช่นเดียวกับข่าวประชาสัมพันธ์ ... กล่าวง่ายๆว่า Vulkan มีความหมายต่อผู้พัฒนาเกมอย่างไร? (Gabe Newell ถูกอ้างถึงว่าเป็นที่โปรดปรานอย่างยิ่งโดยไม่มีคำอธิบายเพิ่มเติม) ความสัมพันธ์ของ Vulkan กับ OpenGL คืออะไรกันแน่? ชื่อก่อนหน้านี้ของมันคือ "glNext" (ย่อมาจาก "Next Generation OpenGL Initiative") ทำให้ดูเหมือนเป็นสิ่งทดแทน อัพเดท: สเปค Vulkan 1.0วางจำหน่ายในวันที่ 16-02-2559
150 opengl  vulkan 

15
ทรัพยากรการเรียนรู้ที่ดีสำหรับ OpenGL มีอะไรบ้าง [ปิด]
ฉันใช้ OpenGL ES บน iPhone มาระยะหนึ่งแล้วโดยทั่วไปฉันรู้สึกว่าหลงทางกับชุดคำสั่งเล็ก ๆ ที่ฉันเคยเห็นในตัวอย่างและนำมาใช้เป็นของตัวเอง ฉันชอบที่จะใช้ OpenGL บนแพลตฟอร์มอื่นและมีความเข้าใจในเรื่องนี้ดี ทุกครั้งที่ฉันค้นหาหนังสือฉันพบว่าคัมภีร์ไบเบิลเล่มใหญ่ที่ดูไม่น่าสนใจและยากสำหรับผู้เริ่มต้น หากฉันใช้เวลาสองสามสัปดาห์ในการเรียนรู้ OpenGL สิ่งที่จะเป็นวิธีที่ดีที่สุดในการใช้เวลาของฉัน (และเงิน)
88 opengl 

9
ทำไมเราถึงย้ายโลกแทนกล้อง
ฉันได้ยินมาว่าในเกม OpenGL สิ่งที่เราทำเพื่อให้ผู้เล่นเคลื่อนไหวไม่ใช่เพื่อขยับกล้อง แต่เพื่อเคลื่อนย้ายโลกทั้งใบ ตัวอย่างเช่นที่นี่เป็นส่วนหนึ่งของบทช่วยสอนนี้: OpenGL View matrix ในชีวิตจริงคุณคุ้นเคยกับการขยับกล้องเพื่อเปลี่ยนมุมมองของฉากหนึ่งใน OpenGL มันเป็นอีกมุมหนึ่ง กล้องใน OpenGL ไม่สามารถเคลื่อนที่ได้และกำหนดให้อยู่ที่ (0,0,0) หันทิศทาง Z เป็นลบ นั่นหมายความว่าแทนที่จะขยับและหมุนกล้องโลกจะถูกขยับและหมุนไปรอบ ๆ กล้องเพื่อสร้างมุมมองที่เหมาะสม ทำไมเราทำเช่นนั้น?

7
แหล่งข้อมูลที่ดีสำหรับการเรียนรู้ OpenGL สมัยใหม่ (3.0 หรือใหม่กว่า)? [ปิด]
ฉันสะดุดเมื่อค้นหาทรัพยากรที่ดีเพื่อเริ่มต้นด้วย OpenGL (3.0 หรือใหม่กว่า) ฉันพบหนังสือจำนวนมาก แต่ไม่มีเลยที่จะถือว่าเป็นทรัพยากรที่ดี! ที่นี่สองตัวอย่าง: คู่มือการเขียนโปรแกรม OpenGL (ฉบับที่ 7) http://www.amazon.com/exec/obidos/ASIN/0321552628/khongrou-20 นี่คือเนื้อหาทั้งหมดที่คัดค้าน! เกือบทุกบทเริ่มต้นด้วยหมายเหตุเกี่ยวกับเรื่องนั้น OpenGL Superbible (5th Edition) http://www.amazon.com/exec/obidos/ASIN/0321712617/khongrou-20 หนังสือเล่มนี้ใช้ไลบรารีที่สร้างโดยผู้เขียนเพื่ออธิบายข้อโต้แย้งหลักซ่อนสิ่งที่คุณต้องการเรียนรู้! ฉันไม่ต้องการเรียนรู้วิธีใช้ห้องสมุดของคุณ! ฉันต้องการเรียนรู้ OpenGL! ฉันหวังว่าคุณจะเข้าใจว่านี่ไม่ใช่คำถามเดียวกันเช่น "เฮ้ฉันไม่สามารถใช้ Google ... บอกวิธีการเรียนรู้ OpenGL" ฉันเพิ่งค้นหาแบบเต็มและลึก แต่ฉันไม่สามารถหาแหล่งข้อมูลที่ดีและสมบูรณ์เพื่อเรียนรู้ OpenGL "ใหม่" ที่หลีกเลี่ยงหัวข้อที่เลิกใช้แล้ว ใครบางคนสามารถมุ่งหน้าฉันไปในทิศทางที่ถูกต้อง? ฉันรู้ว่า C ++ และฉันมีประสบการณ์ 10 ปีในการพัฒนา ... ฉันสามารถหาแหล่งข้อมูลที่ดีได้ที่ไหน ฉันต้องการใช้เวลากับมันและฉันต้องการเรียนรู้อย่างลึกซึ้ง
73 opengl  assets 

9
GUI ที่ดีสำหรับ OpenGL? [ปิด]
ฉันเริ่มที่จะเรียนรู้ OpenGL ด้วย FreeGLUT โดยใช้สุดยอดและความรู้ที่ฉันมีจากกราฟิกระดับต้นของฉันเพื่อทำความเข้าใจทักษะของฉัน หากต้องการได้รับเพิ่มเติมจากประสบการณ์นี้ฉันต้องการรวม GUI เพื่อเขียนทับ FreeGLUT ที่ใช้ตอนนี้คำถามของฉันคือ: สิ่งนี้เป็นไปได้และห้องสมุดใดที่ฉันควรใช้? คุณสมบัติบางอย่างสำหรับห้องสมุด: โอเพ่นซอร์ส หลายแพลตฟอร์ม (Linux และ Windows) C / C ++ หากคุณมีคำแนะนำอื่น ๆ โปรดโพสต์พวกเขาพร้อมกับคำตอบสำหรับปัญหาของฉัน

5
วิธีการหลีกเลี่ยงการตกเลือดในพื้นผิวแผนที่?
ในเกมของฉันมีภูมิประเทศที่เหมือน Minecraft ทำจากก้อน ฉันสร้างบัฟเฟอร์จุดสุดยอดจากข้อมูล voxel และใช้แผนที่พื้นผิวสำหรับลักษณะของบล็อกที่แตกต่างกัน: ปัญหาคือพื้นผิวของลูกบาศก์ที่อยู่ห่างไกลสอดแทรกด้วยกระเบื้องที่อยู่ติดกันในแผนที่พื้นผิว ผลลัพธ์ในบรรทัดของสีที่ไม่ถูกต้องระหว่างคิวบ์ (คุณอาจต้องดูภาพหน้าจอด้านล่างในขนาดเต็มเพื่อดูข้อบกพร่องกราฟิก): ตอนนี้ฉันใช้การตั้งค่าการแก้ไขเหล่านี้ แต่ฉันลองทุกชุดรวมกันและแม้GL_NEARESTไม่มีการแมปแมปก็ไม่ได้ผลลัพธ์ที่ดี glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); ฉันได้ลองเพิ่มออฟเซ็ตในพิกัดพื้นผิวเพื่อเลือกพื้นที่เล็ก ๆ ของกระเบื้อง แต่เนื่องจากเอฟเฟกต์ที่ไม่ต้องการขึ้นอยู่กับระยะห่างจากกล้องจึงไม่สามารถแก้ปัญหาได้อย่างสมบูรณ์ ในระยะทางไกล ฉันจะแก้ไขการตกเลือดนี้ได้อย่างไร เนื่องจากการใช้แผนที่พื้นผิวเป็นเทคนิคที่นิยมอาจมีวิธีการทั่วไป น่าเศร้าด้วยเหตุผลบางอย่างที่อธิบายในความคิดเห็นฉันไม่สามารถเปลี่ยนเป็นพื้นผิวหรืออาร์เรย์พื้นผิวที่แตกต่างกันได้

1
คำหลักเข้า / ออกใน GLSL
ฉันไม่เข้าใจวิธีใช้in/ outคีย์เวิร์ดใน GLSL และ google ก็ไม่ได้ช่วยอะไรมากมาย พวกเขาทำอะไรกันแน่ ตัวอย่างเช่นฉันจะใช้มันได้อย่างไรถ้าฉันต้องการส่งชุดตัวแปรที่แตกต่างกันต่อยอดไปยังส่วนที่แตกต่างกัน? แท้จริงทุกบทช่วยสอนที่ฉันพบใช้varying/ attributeคำหลักและนั่นไม่เป็นประโยชน์
46 opengl  glsl 

2
หลังจาก glLinkProgram ที่ประสบความสำเร็จฉันควรลบ / ถอดเฉดสีของฉันออกหรือไม่
หลังจากฉันมีโปรแกรมที่เชื่อมโยงและคิดเกี่ยวกับการตั้งโปรแกรมการป้องกันฉันควรลบและถอดเฉดสีที่ใช้ในการเชื่อมโยงโปรแกรมนี้หรือไม่ ถ้าใช่นั่นคือการปลดปล่อยทรัพยากรใด ๆ หรือไม่? หรือว่าวัตถุ shader เหล่านี้จะได้รับการปลดปล่อยหลังจากเรียกใช้ glDeleteProgram เท่านั้น? แก้ไข: เพียงเพื่อชี้แจงสิ่งที่ฉันทำคือ (ซึ่งสอดคล้องกับคำตอบ): glCreateShader -> glShaderSource -> glCompileShader -> glCreateProgram -> glAttachShader -> glLinkProgram -> glDetachShader -> glDeleteShader -> วาดโดยใช้โปรแกรม shader นี้ -> และเมื่อฉันไม่ต้องการโปรแกรมนี้อีกต่อไป
45 opengl  shaders 

10
การเรียนรู้ OpenGL 2.1 ไร้ประโยชน์วันนี้หรือไม่?
ฉันยังใหม่กับโลก 3D OpenGL / DirectX และฉันพบว่าข้อกำหนด OpenGL 4.1 และ GLSL เพิ่งเปิดตัวในวันนี้ เพื่อนของฉันให้ Red Book แก่ OGL v2.1 ให้ฉัน แต่เท่าที่ฉันได้อ่าน 3.x และ 4.x นั้นต่างจากมาก 2.x และตอนนี้เลิกใช้แล้ว ฉันสามารถใช้หนังสือเล่มนี้เพื่อเริ่มต้นเรียนรู้พื้นฐานของ 3D และ CG หรือจะหาสำเนาที่ใหม่กว่าดีกว่าไหม
44 opengl 

3
ทำไมบทช่วยสอนใช้วิธีการต่าง ๆ ในการเรนเดอร์ OpenGL
http://www.sdltutorials.com/sdl-opengl-tutorial-basics http://www.opengl-tutorial.org/beginners-tutorials/tutorial-2-the-first-triangle/ บทเรียนสองบทนี้ใช้วิธีการต่างกันโดยสิ้นเชิงเพื่อให้ได้ผลลัพธ์ที่ใกล้เคียงกัน แรก ๆ glBegin(GL_QUADS)ที่ใช้สิ่งที่ต้องการ อันที่สองใช้สิ่งที่ชอบvertexBufferObjectsshaders ตาม GLEW แต่ผลลัพธ์ก็เหมือนกัน: คุณจะได้รูปร่างพื้นฐาน ทำไมความแตกต่างเหล่านี้จึงมีอยู่? วิธีแรกดูเหมือนง่ายกว่าที่จะเข้าใจ ข้อดีของวิธีที่สองที่ซับซ้อนคืออะไร

6
OpenGL เหมาะสมกับเกม 2D หรือไม่?
ฉันสอนตัวเองที่ห้องสมุด OpenGL มาระยะหนึ่งแล้วและต้องการเริ่มทำเกม อย่างไรก็ตามเพื่อการแนะนำที่ง่ายขึ้นฉันต้องการเริ่มด้วยบางสิ่งบางอย่าง 2D เช่นเกมสไตล์โปเกมอนบนลงล่าง นี่เป็นแผนที่ดีหรือเป็น OpenGL ที่สร้างขึ้นเป็นพิเศษสำหรับ 3D หรือไม่?
43 opengl  2d 

1
ทำไมการเรียกฟังก์ชั่น OpenGL ทั้งหมดนำหน้าด้วย“ q” ในซอร์สโค้ด Doom 3
ทำไมการโทรทุก OpenGL นำหน้าด้วย "q" ในรหัสต้นฉบับ Doom 3 พวกเขามีฟังก์ชั่นที่กำหนดเองหรือห้องสมุดที่แตกต่างกันและถ้าเป็นเช่นนั้นทำไมใช้ที่มากกว่า OpenGL? การค้นหาของ Google ใด ๆ เกิดขึ้นกับโมดูล Qt OpenGL ซึ่งฉันคิดว่าไม่มีส่วนเกี่ยวข้องกับมัน
42 opengl  c++ 

1
ฉันจะลดนามแฝงในเอฟเฟกต์การเรืองแสงร่างของฉันได้อย่างไร
ฉันพยายามจำลองเอฟเฟกต์ร่างเรืองแสงในเกม Left 4 Dead เอฟเฟกต์ทำให้วัตถุมีการเรืองแสงแม้ว่าวัตถุจะถูกบัง นี่คือภาพหน้าจอของเอฟเฟกต์: ฉันสามารถทำซ้ำเอฟเฟกต์นี้ในโปรแกรมที่ใช้ OpenGL ได้บ้าง นี่คือสิ่งที่ฉันกำลังทำอยู่: สร้างพื้นผิวสีและความลึกที่มีขนาดครึ่งหนึ่งของขนาดหน้าจอสำหรับแสดงวัตถุที่เรืองแสง ล้างพื้นผิวสี / แสงที่เรืองแสง สีจะถูกล้างเป็นสีดำ สำหรับวัตถุที่ส่องแสงแต่ละอันให้ฉายไปบนพื้นผิวเรืองแสงเป็นสีทึบ ทำการเบลอเกาส์แยกไม่ออกบนพื้นผิวเรืองแสง ทำให้ฉากความละเอียดเต็มตามปกติ ผสมผสานพื้นผิวเรืองแสงเข้ากับฉากปกติอย่างแนบเนียน แต่ใช้พื้นผิวความลึกของแสงเรืองแสงเพื่อปกปิดวัตถุออกมาเหลือเพียงโครงร่างที่เบลอ นี่คือภาพหน้าจอของแนวทางของฉัน: นี่คือ shader ส่วนที่รวมพื้นผิวเรืองแสงกับฉาก: uniform sampler2D glowColorTex; uniform sampler2D glowDepthTex; uniform sampler2D sceneColorTex; void main() { vec2 uv = gl_TexCoord[0].st; vec4 color = texture2D( sceneColorTex, uv); float depth = texture2D( …
42 opengl  shaders  glsl  glow 

5
ฉันจะสร้างเอฟเฟกต์ไฟที่ดีด้วยการผสมอัลฟ่าและอนุภาคได้อย่างไร
การใช้การตั้งค่าต่อไปนี้สำหรับเอฟเฟกต์อนุภาค OpenGL: SRC: GL_SRC_ALPHA DST: GL_ONE สร้างการผสมผสานเพิ่มเติมซึ่งมีลักษณะที่งดงามบนพื้นหลังสีดำ แต่น่ากลัวในสีที่สว่างกว่าเพราะมันเริ่มจางลงเป็นสีขาว จากนั้นฉันก็ใช้การผสมอัลฟา: SRC: GL_SRC_ALPHA DST: GL_ONE_MINUS_SRC_ALPHA สิ่งนี้ทำให้พื้นหลังอื่น ๆ สามารถใช้งานได้โดยไม่ส่งผลกระทบต่อสีของอนุภาค แต่อนุภาคเหล่านั้นดูหมองคล้ำเมื่อเปรียบเทียบกับการผสมผสานแบบเติมแต่ง ฉันจะสร้างเอฟเฟกต์ไฟที่ดีด้วยการผสมอัลฟ่าและอนุภาคได้อย่างไร สารเติมแต่ง: อัลฟา: UPDATE: ตามคำแนะนำของเดวิดด้านล่างฉันสร้างพื้นผิวแยกต่างหากจากนั้นใช้การผสมผสานแบบเติมต่อเอฟเฟกต์ของอนุภาคก่อนที่จะวาดลงบนพื้นผิว ปัญหาที่เกิดขึ้นก็คือการวาดภาพบนพื้นผิว alpha = 0 ส่งผลให้ชิ้นส่วนที่เป็นสีของอนุภาคปรากฏขึ้นด้านหน้าแผนที่โลกของฉันเนื่องจากโดยปกติคุณมีพื้นหลังสีดำแทน เคล็ดลับคือใช้พื้นผิวสองแบบ ฉันสร้างพื้นผิวสีดำแล้วดึงอนุภาคบนมัน จากนั้นฉันก็ลบชั้นอัลฟ่าของอนุภาคออกจากพื้นผิวนี้ทำการลบสิ่งที่เป็นของแข็งสีดำรอบ ๆ และลบล้างอนุภาคที่มองเห็นได้บางส่วนในขณะที่ปล่อยให้สีดำพื้นฐานที่คุณคาดหวัง ในระยะสั้นเป็นกระบวนการที่ทรหด แต่ในที่สุดก็มาถึง: นี่คือกระทู้ที่ฉันโพสต์กระบวนการของฉัน: http://www.cocos2d-iphone.org/forum/topic/28707?replies=8#post-141528 วิดีโอ: http://www.youtube.com/watch?v=JptGbEO3b5E

5
นักแสดงในเกมควรมีความรับผิดชอบในการวาดภาพตนเองหรือไม่?
ฉันยังใหม่ต่อการพัฒนาเกม แต่ไม่ได้เขียนโปรแกรม ฉัน (อีกครั้ง) เล่นกับเกมประเภท Pong โดยใช้canvasองค์ประกอบของ JavaScript ฉันสร้างPaddleวัตถุที่มีคุณสมบัติดังต่อไปนี้ ... width height x y colour ฉันยังมีPongวัตถุที่มีคุณสมบัติเช่น ... width height backgroundColour draw(). draw()วิธีการในปัจจุบันคือการรีเซ็ตcanvasและที่เป็นที่คำถามขึ้นมา ควรPaddleวัตถุมีdraw()วิธีการรับผิดชอบสำหรับการวาดภาพหรือควรdraw()ของPongวัตถุต้องรับผิดชอบสำหรับการวาดภาพของนักแสดง (ฉันคิดว่าเป็นคำที่ถูกต้องโปรดแก้ไขฉันหากฉันไม่ถูกต้อง) ฉันคิดว่ามันจะเป็น advantagous สำหรับPaddleการวาดตัวเองที่ผมยกตัวอย่างวัตถุสองและPlayer Enemyถ้ามันไม่ได้อยู่ในPongของdraw()ฉันจะต้องเขียนรหัสที่คล้ายกันสองครั้ง การปฏิบัติที่ดีที่สุดที่นี่คืออะไร? ขอบคุณ

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