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

ชุดย่อยของกราฟิก OpenGL 3D API ออกแบบมาสำหรับอุปกรณ์ฝังตัวเช่นโทรศัพท์มือถือ

1
GLSL: ฉันจะเหวี่ยงทุ่นไปยัง int ได้อย่างไร
ใน Shader GLSL ส่วนฉันพยายามที่จะโยนลงไปfloat intคอมไพเลอร์ทำให้เกิดข้อผิดพลาด: ERROR: 0:60: '=' : cannot convert from 'mediump float' to 'highp int' ฉันพยายามเพิ่มความแม่นยำของint: mediump float indexf = floor(2.0 * mixer); highp int index = indexf; แต่ไม่มีประโยชน์ ฉันจะคัดเลือกนักแสดงที่intเหมาะสมได้อย่างไร
40 opengl  glsl  opengl-es 

5
วิธีแก้ปัญหาสำหรับการสูญเสียบริบท OpenGL เมื่อ Android หยุดชั่วคราว
เอกสาร Android พูดว่า: มีสถานการณ์ที่บริบทการแสดงผล EGL จะหายไป สิ่งนี้มักจะเกิดขึ้นเมื่ออุปกรณ์ตื่นนอนหลังจากเข้านอน เมื่อบริบท EGL หายไปทรัพยากร OpenGL ทั้งหมด (เช่นพื้นผิว) ที่เชื่อมโยงกับบริบทนั้นจะถูกลบโดยอัตโนมัติ เพื่อให้การเรนเดอร์เป็นไปอย่างถูกต้อง renderer ต้องสร้างรีซอร์สที่สูญหายซึ่งยังคงต้องการอยู่ วิธี onSurfaceCreated (GL10, EGLConfig) เป็นสถานที่ที่สะดวกในการทำเช่นนี้ แต่การต้องโหลดพื้นผิวทั้งหมดในบริบท OpenGL นั้นเป็นทั้งความเจ็บปวดและเจ็บประสบการณ์การเล่นเกมของผู้ใช้เมื่อเข้าสู่แอพอีกครั้งหลังจากหยุดชั่วคราว ฉันรู้ว่า "Angry Birds" จะหลีกเลี่ยงสิ่งนี้ฉันกำลังมองหาคำแนะนำเกี่ยวกับวิธีการทำเช่นเดียวกัน? ฉันกำลังทำงานกับ Android NDK r5 (รุ่น CrystaX) ฉันพบแฮ็คที่เป็นไปได้ในปัญหานี้ แต่ฉันพยายามหลีกเลี่ยงการสร้าง SDK แบบกำหนดเองทั้งหมด



3
ขนาด Sprite OpenGL ES 2.0 Point
ฉันกำลังพยายามวาด sprite พอยต์ใน OpenGL ES 2.0 แต่จุดทั้งหมดของฉันจบลงด้วยขนาด 1 พิกเซล ... แม้ว่าฉันจะตั้งค่า gl_PointSize ให้มีค่าสูงใน Shader ของฉันก็ตาม ฉันจะทำให้จุดสไปรต์ของฉันใหญ่ขึ้นได้อย่างไร
15 opengl  3d  android  opengl-es 

2
OpenGL ES 2.0: การตั้งค่าการฉาย 2D
บทความนี้อธิบายโดยทั่วไปวิธีการวาดกราฟิค OpenGL 2D ที่คมชัดโดยใช้ฟังก์ชั่นฟังก์ชั่นคงที่ http://basic4gl.wikispaces.com/2D+Drawing+in+OpenGL เนื่องจาก OpenGL ES 2.0 มีฟังก์ชั่น ES 1.x บางฟังก์ชั่นไม่สามารถใช้งานได้ (เช่น: glOrtho ()) การทำงานของพวกเขาจะต้องถูกแทนที่ใน Fragment / Vertex shaders คำถามของฉันคือวิธีการตั้งค่าการฉายภาพ 2D ต่อไปนี้ในฟังก์ชั่นไปป์ไลน์ที่ตั้งโปรแกรมได้? const XSize = 640, YSize = 480 glMatrixMode (GL_PROJECTION) glLoadIdentity (); glOrtho (0, XSize, YSize, 0, 0, 1) glMatrixMode (GL_MODELVIEW) วิธีการกำหนดค่า Fragment และ Vertex shaders เพื่อทดแทนฟังก์ชั่นการตั้งค่าการฉาย …

5
ห้องสมุดคณิตศาสตร์ที่สมบูรณ์สำหรับใช้ในเกม OpenGL ES 2.0 หรือไม่ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา คุณทราบหรือไม่ว่าไลบรารีคณิตศาสตร์ข้ามแพลตฟอร์มที่สมบูรณ์ (หรือเกือบจะสมบูรณ์) สำหรับใช้ในเกม OpenGL ES 2.0? ห้องสมุดควรมี: คลาส Matrix2x2, เมทริกซ์ 3x3, Matrix4x4 quaternions คลาส Vector2, Vector3, Vector4 คลาสมุมออยเลอร์ การดำเนินการในชั้นเรียนที่กล่าวถึงการแปลง ฯลฯ การดำเนินการทางคณิตศาสตร์ที่ใช้เป็นมาตรฐานในกราฟิก 3 มิติ (ผลิตภัณฑ์ Dot, Cross Product, SLERP, ฯลฯ ... ) มี API คณิตศาสตร์ดังกล่าวสามารถใช้ได้ทั้งแบบสแตนด์อโลนหรือเป็นส่วนหนึ่งของแพคเกจใด ๆ ? ภาษาการเขียนโปรแกรม: Visual C …

1
ฉันควรกระจายเฉดสีในรูปแบบที่คอมไพล์หรือเป็นข้อความธรรมดาหรือไม่?
หากมีแอปพลิเคชันที่ใช้ตัวแปลงแสงที่เขียนไว้ใน GLSL กลยุทธ์ที่ดีที่สุดสำหรับการเผยแพร่ในโลกแห่งความเป็นจริงคืออะไรและสำหรับเดสก์ท็อปและมือถือ ฉันมุ่งที่จะเผยแพร่สิ่งนี้ในรูปแบบไบนารีหรือเป็นข้อความธรรมดาต่อเนื่องฉันขอคำแนะนำที่ดีเกี่ยวกับเรื่องนี้

4
การกำหนดรูปทรงเรขาคณิตใน OpenGL ES 2.0
ฉันวางแผนที่จะทำรูปทรงเรขาคณิตใน OpenGL ES 2.0 โดยทั่วไปฉันวางแผนที่จะแสดงรูปทรงเรขาคณิตเดียวกัน (เก้าอี้) อาจจะ 1,000 ครั้งในฉากของฉัน วิธีที่ดีที่สุดในการทำสิ่งนี้ใน OpenGL ES 2.0 คืออะไร? ฉันกำลังพิจารณาส่งโมเดลดู mat4 เป็นแอตทริบิวต์ เนื่องจากแอตทริบิวต์เป็นข้อมูลต่อยอดฉันต้องผ่าน mat4 เดียวกันนี้สามครั้งสำหรับแต่ละจุดยอดของรูปสามเหลี่ยมเดียวกัน (เนื่องจาก modelview ยังคงคงที่ข้ามจุดยอดของรูปสามเหลี่ยม) นั่นจะเป็นข้อมูลพิเศษจำนวนมากที่ส่งไปยัง GPU (2 จุดยอดพิเศษ * 16 ลอย * (จำนวนสามเหลี่ยม) จำนวนข้อมูลพิเศษ) หรือฉันควรจะส่ง mat4 เพียงครั้งเดียวต่อรูปสามเหลี่ยม แต่วิธีที่เป็นไปได้โดยใช้คุณลักษณะเนื่องจากแอตทริบิวต์ถูกกำหนดเป็นข้อมูล "ต่อยอด" วิธีที่ดีที่สุดและมีประสิทธิภาพในการทำอินสแตนซ์ใน OpenGL ES 2.0 คืออะไร

4
GLM: มุมออยเลอร์ถึงควอเทอร์เนียน
ฉันหวังว่าคุณจะรู้คณิตศาสตร์ GL ( GLM ) เพราะฉันมีปัญหาฉันไม่สามารถทำลาย: ฉันมีชุดของออยเลอร์แองเกิ้ลและฉันจำเป็นต้องทำการแก้ไขอย่างราบรื่นระหว่างพวกเขา วิธีที่ดีที่สุดคือแปลงพวกมันเป็นQuaternionsและใช้SLERP alrogirthm ปัญหาที่ฉันมีคือวิธีการเริ่มต้น glm :: quaternion กับ Euler Angles ได้ไหม? ฉันอ่านเอกสาร GLM ครั้งแล้วครั้งเล่าแต่ฉันไม่สามารถหาที่เหมาะสมQuaternion constructor signatureได้ซึ่งต้องใช้เวลาสามมุมของออยเลอร์ ที่ใกล้เคียงที่สุดที่ฉันพบคือ ฟังก์ชั่นangleAxis ()รับค่ามุมและแกนสำหรับมุมนั้น หมายเหตุโปรดสิ่งที่ฉันกำลังมองหา si RotX, RotY, RotZทางวิธีการแยก สำหรับข้อมูลของคุณนี่คือลายเซ็นของฟังก์ชันangleAxis () ที่ เป็น metnioned ด้านบน: detail::tquat< valType > angleAxis (valType const &angle, valType const &x, valType const &y, valType …

1
ความแตกต่างใน glDrawArrays และ glDrawElements
ในขณะที่สดชื่นใจของฉันกับ OpenGL ES ฉันมาข้ามและglDrawArraysglDrawElements ฉันเข้าใจว่ามีการใช้งานอย่างไรและเข้าใจว่าทำไมจึงแตกต่างกัน สิ่งที่ฉันดูเหมือนจะไม่เข้าใจก็คือฉันไม่สามารถดูวิธีการglDrawElementsบันทึกการโทรแบบดึง ( การบันทึกการโทรแบบดึงเป็นคำอธิบายที่กล่าวถึงในหนังสือส่วนใหญ่ที่ฉันได้อ่าน ลองนึกภาพสถานการณ์ง่าย ๆ ที่ฉันพยายามวาดรูปสี่เหลี่ยมโดยใช้รูปสามเหลี่ยม 2 รูป ฉันจะต้องมีชุดของ 6 จุดยอดใช้glDrawArraysในขณะที่ใช้glDrawElementsฉันต้องการเพียง 4 นอกเหนือจากอาร์เรย์ดัชนีที่มี 6 องค์ประกอบ รับข้างต้นนี่คือสิ่งที่ฉันไม่เข้าใจ: จะglDrawElementsบันทึกการเรียกสายได้อย่างไรถ้ายังต้องการใช้อาร์เรย์ดัชนี (ดัชนี 6 ตัวในกรณีสี่เหลี่ยม) เพื่อจัดทำดัชนีลงในอาร์เรย์จุดสุดยอดของฉันที่มี 4 องค์ประกอบ (6 ครั้ง) พูดอีกอย่างว่าหมายความว่าglDrawElementsยังคงต้องมีการดึงสายเรียกเข้าทั้งหมด 6 ครั้งglDrawArraysใช่ไหม จะใช้glDrawElementsพื้นที่ประหยัดได้อย่างไรถ้าใครยังคงต้องมี 2 อาร์เรย์คือหนึ่งสำหรับจุดยอดและอีกหนึ่งสำหรับดัชนี? ในกรณีของการวาดรูปสี่เหลี่ยมจัตุรัสจากรูปสามเหลี่ยม 2 รูปแบบเพื่อความง่ายจำนวนการเรียกแบบดึงglDrawElements(จำนวน 4 รายการในอาร์เรย์จุดยอดและ 6 รายการในแถวลำดับดัชนี) และglDrawArrays(6 รายการเฉพาะในจุดสุดยอดอาร์เรย์) ต้องแยกกันหรือไม่? ขอบคุณ

3
ฉันจะงอวัตถุใน OpenGL ได้อย่างไร
มีวิธีหนึ่งที่สามารถโค้งงอวัตถุเช่นทรงกระบอกหรือระนาบโดยใช้ OpenGL ได้หรือไม่? ฉันเป็นผู้เริ่มต้น OpenGL (ฉันใช้ OpenGL ES 2.0 ถ้าเป็นเรื่องสำคัญแม้ว่าฉันจะสงสัยว่าคณิตศาสตร์มีความสำคัญที่สุดในกรณีนี้ดังนั้นจึงเป็นเวอร์ชั่นที่ไม่ขึ้นอยู่กับรุ่น) ฉันเข้าใจพื้นฐาน: แปลหมุนหมุนเมทริกซ์เป็นต้น ฉันสงสัยว่ามีเทคนิคที่ช่วยให้คุณเปลี่ยนรูปทรงเรขาคณิตของวัตถุของคุณ (ในกรณีนี้ด้วยการดัดงอ) หรือไม่? ยินดีต้อนรับลิงค์บทเรียนหรือการอ้างอิงอื่น ๆ !

2
ฉันจะใช้การทดสอบเชิงลึกและความโปร่งใสของพื้นผิวร่วมกันในโลก 2.5D ของฉันได้อย่างไร
หมายเหตุ:ฉันได้พบคำตอบแล้ว (ซึ่งฉันจะโพสต์หลังจากคำถามนี้) - ฉันแค่สงสัยว่าฉันทำถูกหรือว่ามีวิธีที่ดีกว่า ฉันสร้างเกมภาพสามมิติ "2.5D" โดยใช้ OpenGL ES (JOGL) โดย "2.5D" ฉันหมายความว่าโลกนี้เป็น 3D แต่มันถูกสร้างการแสดงผลโดยใช้แผ่นกระเบื้องสามมิติแบบสองมิติ ปัญหาเดิมที่ฉันต้องแก้ไขก็คือพื้นผิวของฉันจะต้องแสดงผลตามลำดับ (จากด้านหลังไปข้างหน้า) เพื่อให้กระเบื้องซ้อนทับอย่างถูกต้องเพื่อสร้างผลที่เหมาะสม หลังจากอ่านเสร็จฉันก็รู้ได้ทันทีว่านี่เป็นวิธี 2D "หมวกเก่า" เรื่องนี้กลายเป็นเรื่องยากที่จะทำอย่างมีประสิทธิภาพเนื่องจากผู้เล่นสามารถปรับเปลี่ยนโลก 3 มิติ (ดังนั้นสิ่งต่างๆสามารถปรากฏที่ใดก็ได้ในพื้นที่ 3 มิติ) - ดูเหมือนว่าฉันใช้ประโยชน์จากบัฟเฟอร์ความลึก นั่นหมายความว่าฉันไม่ต้องกังวลกับการแสดงสิ่งต่าง ๆ ในลำดับที่ถูกต้อง อย่างไรก็ตามฉันประสบปัญหา หากคุณใช้GL_DEPTH_TESTและGL_BLENDร่วมกันมันจะสร้างเอฟเฟกต์ที่วัตถุจะถูกผสมกับพื้นหลังก่อนที่จะ "เรียงลำดับ" ตามลำดับ z (หมายความว่าคุณได้รับการทับซ้อนแบบแปลก ๆ ที่ควรมีความโปร่งใส) นี่คือรหัสหลอกที่ควรแสดงให้เห็นถึงปัญหา (โดยบังเอิญฉันใช้ libgdx สำหรับ Android) create() { // ... // …

2
ใน OpenGL ฉันจะค้นหาช่วงความลึกของบัฟเฟอร์ความลึกได้อย่างไร
ฉันกำลังใช้งานแอพพลิเคชั่นการแสดงผลหลายรอบ GL สำหรับ iOS ครั้งแรกที่ส่งผ่านไปยังพื้นผิวบัฟเฟอร์ความลึก การผ่านครั้งที่สองใช้ค่าในบัฟเฟอร์ความลึกเพื่อควบคุมแอปพลิเคชันของตัวแยกส่วน ฉันต้องการ rescale ค่าใน buffer ความลึกเพื่อสิ่งที่มีประโยชน์ แต่ก่อนที่ฉันสามารถทำได้ฉันจำเป็นต้องรู้ช่วงค่าความลึกของค่าความลึกของบัฟเฟอร์ ฉันจะทำสิ่งนี้ได้อย่างไร

2
เหตุใดมูลค่าการโอนย้ายของ glUniformMatrix4fv ใน webgl / OpenGL ES จึงเป็นเท็จ
เหตุใดมูลค่าการโอนย้ายของ glUniformMatrix4fv ใน webgl / OpenGL ES จึงเป็นเท็จ ข้อมูลจำเพาะ OpenGL ESบอกว่าค่าการแปลงจะต้องเป็นเท็จหรือสร้าง INVALID_VALUE ทำไมจึงมีพารามิเตอร์
11 opengl-es  webgl 

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