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

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

12
ทฤษฎี 3 มิติก่อนกราฟิค API? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันเป็นวิศวกรซอฟต์แวร์และฉันหวังว่าจะย้ายอาชีพของฉันไปสู่การพัฒนาเกม ตอนนี้ฉันกำลังอ่านหนังสือ 2 มิติโดยใช้ C ++ / DirectX เมื่อฉันเข้าสู่ 3D ฉันรู้ว่าฉันต้องการทำอย่างถูกต้อง ตัวอย่างเช่นฉันไม่รู้อะไรเลยเกี่ยวกับพื้นที่ 3 มิติ ดังนั้นถ้าฉันเรียนรู้ API เพียงอย่างเดียวฉันอาจจะรู้ แต่ฉันไม่รู้ว่าฉันจะสามารถพัฒนาโลกแบบมินิ 3 มิติได้หรือไม่ ฉันจะไม่เรียกตัวเองว่าประสบความสำเร็จเพียงแค่มีลังหมุนที่มีตัวห่อล่าสุด ฯลฯ ทักษะคณิตศาสตร์ของฉันขึ้นอยู่กับพีชคณิตเชิงเส้น / เชิงเส้นและยังอยู่ในวิทยาลัย ฉันรู้ว่าคณิตศาสตร์กำลังจะมา ฉันควรอ่านหนังสือทฤษฎีสามมิติก่อนที่จะหยิบมาใช้ใน OpenGL / Direct3D หรือคำแนะนำอื่น ๆ หรือไม่? ฉันเพิ่งรู้ว่า API จะไม่สอนการพัฒนาเกม 3 มิติและไม่ต้องการที่จะสูญเสียในภายหลัง ฉันชอบหนังสือมากดังนั้นก็ดีถ้ามีคำแนะนำอยู่ด้วย …
19 graphics  c++  opengl  directx 

7
ทำไมความละเอียดของจำนวนจุดลอยตัวจึงลดลงมากกว่าเดิม?
ฉาก OpenGL ของฉันมีวัตถุที่อยู่ในตำแหน่งที่ห่างไกลจากจุดกำเนิด เมื่อฉันดูวัตถุเหล่านี้และแพน / หมุน / ซูมกล้องรอบ ๆ วัตถุพวกเขาจะกระวนกระวายใจ นั่นคือจุดยอดที่ประกอบไปด้วยวัตถุดูเหมือนจะหมุนไปรอบ ๆ ตารางคะแนนสามมิติในจินตนาการ ฉันได้อ่านสิ่งนี้เป็นปัญหาที่พบบ่อยเนื่องจากจำนวนข้อมูลที่สามารถจัดเก็บโดยใช้ความแม่นยำจุดลอยตัว (ซึ่ง OpenGL และทุกอย่างอื่นใช้) ฉันไม่เข้าใจว่าทำไมสิ่งนี้ถึงเกิดขึ้น เมื่อค้นหาวิธีแก้ปัญหาฉันเจอปัญหา 'ต้นกำเนิดแบบลอยตัว' ที่เรียบง่ายมากและดูเหมือนว่าจะใช้งานได้ ฉันแค่แปลงทุกอย่างเพื่อให้วัตถุของฉันอยู่ในตำแหน่งเดียวกัน แต่สิ่งที่กล้องของฉันดูอยู่ใกล้กับจุดกำเนิด ฉันพบคำอธิบายที่นี่: http://floatingorigin.com/แต่ฉันทำตามไม่ได้ ดังนั้น ... ใครบางคนสามารถอธิบายได้ว่าทำไมการวางฉากของฉันให้ห่างไกลมาก (พูดถึง 10 ล้านหน่วย) จากจุดกำเนิดทำให้เกิดพฤติกรรมที่ผิดปกติที่ฉันสังเกตเห็น? และทำไมการย้ายไปอยู่ใกล้กับจุดเริ่มต้นช่วยแก้ปัญหา
19 c++  opengl 

2
texelFetch และพื้นผิวของ OpenGL แตกต่างกันอย่างไร
ฉันเข้าใจความแตกต่างที่สำคัญระหว่างtexelFetchและtextureแต่มีคำถามบางอย่างเกี่ยวกับรายละเอียด: ไม่texelFetchเกี่ยวข้องกับการลงโทษประสิทธิภาพหรือไม่? เช่นไม่ได้ใช้แคชหรือเช่น? มีtexelFetchและtextureใช้แทนกันได้เมื่อใช้GL_NEAREST?

1
การออกแบบเครื่องมือเกม - Ubershader - การออกแบบการจัดการ Shader [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ฉันต้องการใช้ระบบ Ubershader ที่ยืดหยุ่นด้วยการแรเงาที่เลื่อนออกไป ความคิดปัจจุบันของฉันคือการสร้างความแตกต่างจากโมดูลซึ่งจัดการกับคุณสมบัติบางอย่างเช่น FlatTexture, BumpTexture, Displacement Mapping เป็นต้นนอกจากนี้ยังมีโมดูลขนาดเล็กที่ถอดรหัสสีทำการแมปโทนและอื่น ๆ ซึ่งมีข้อดีที่ฉันสามารถ แทนที่โมดูลบางประเภทหาก GPU ไม่รองรับดังนั้นฉันสามารถปรับให้เข้ากับความสามารถของ GPU ในปัจจุบัน ฉันไม่แน่ใจว่าการออกแบบนี้ดีหรือไม่ ฉันกลัวว่าฉันจะเลือกได้ไม่ดีตอนนี้และจ่ายเงินในภายหลัง คำถามของฉันคือฉันจะหาแหล่งข้อมูลตัวอย่างบทความเกี่ยวกับวิธีการนำระบบการจัดการ shader ไปใช้ได้อย่างมีประสิทธิภาพได้อย่างไร ไม่มีใครรู้ว่าเอ็นจิ้นเกมใหญ่ทำเช่นนี้ได้อย่างไร

6
การเรนเดอร์ tilemap ที่ไร้รอยต่อ (ภาพที่อยู่ติดกันแบบไร้ขอบ)
ฉันมีเอ็นจิ้นเกม 2D ที่ดึงแผ่นกระเบื้องโดยการวาดแผ่นจากภาพชุดไพ่ เนื่องจากตามค่าเริ่มต้นแล้ว OpenGL สามารถห่อทั้งพื้นผิว ( GL_REPEAT) และไม่ได้เป็นส่วนหนึ่งของมันเท่านั้นไทล์แต่ละอันจึงแยกออกเป็นพื้นผิวแยกต่างหาก จากนั้นพื้นที่ของไทล์เดียวกันจะแสดงผลติดกัน นี่คือสิ่งที่ดูเหมือนว่าเมื่อทำงานตามที่ตั้งใจไว้: อย่างไรก็ตามทันทีที่คุณแนะนำการปรับสัดส่วนแบบตะเข็บปรากฏ: ทำไมสิ่งนี้ถึงเกิดขึ้น ฉันคิดว่าเป็นเพราะการกรองเชิงเส้นเป็นการผสมผสานเส้นขอบของคณะสี่คน แต่มันก็ยังคงเกิดขึ้นกับการกรองแบบจุด วิธีแก้ปัญหาเดียวที่ฉันพบคือการรับประกันว่าการวางตำแหน่งและการปรับขนาดทั้งหมดจะเกิดขึ้นที่ค่าจำนวนเต็มและใช้การกรองแบบจุดเท่านั้น สิ่งนี้สามารถลดคุณภาพการมองเห็นของเกม (โดยเฉพาะการวางตำแหน่งพิกเซลย่อยไม่ทำงานอีกต่อไปดังนั้นการเคลื่อนไหวจะไม่ราบรื่น) สิ่งที่ฉันได้ลอง / พิจารณา: การลดรอยหยักจะลด แต่ไม่ได้กำจัดรอยตะเข็บทั้งหมด การปิดการทำแผนที่ไม่มีผล เรนเดอร์แต่ละแผ่นแยกกันและขับขอบ 1px - แต่นี่เป็นการลดประสิทธิภาพเนื่องจากมันไม่สามารถแสดงพื้นที่ของกระเบื้องได้ในคราวเดียวและสร้างสิ่งประดิษฐ์อื่น ๆ ตามขอบของพื้นที่โปร่งใส เพิ่มเส้นขอบ 1px รอบ ๆ รูปภาพต้นทางและทำซ้ำพิกเซลสุดท้าย - แต่จากนั้นจะไม่มีกำลังไฟสองอีกต่อไปทำให้เกิดปัญหาความเข้ากันได้กับระบบที่ไม่มีการสนับสนุน NPOT การเขียน shader ที่กำหนดเองเพื่อจัดการกับภาพที่มีการเรียงต่อกัน - แต่แล้วคุณจะทำอะไรที่แตกต่างออกไป? GL_REPEATควรจับพิกเซลจากด้านตรงข้ามของภาพที่ขอบและไม่เลือกความโปร่งใส เรขาคณิตอยู่ติดกันอย่างแน่นอนไม่มีข้อผิดพลาดในการปัดเศษจุดลอยตัว ถ้า Shader ส่วนจะเขียนยากที่จะกลับมามีสีเดียวกันตะเข็บหายไป ถ้าพื้นผิวมีการกำหนดให้GL_CLAMPแทนGL_REPEAT, ตะเข็บหายไป …

4
ฉันจะโคจรกล้องไปยังจุดที่เป็นเป้าหมายได้อย่างไร
ฉันวาดฉากที่กล้องเคลื่อนไหวอย่างอิสระเกี่ยวกับจักรวาล คลาสกล้องจะติดตามตำแหน่งมุมมอง (หรือดู ) ตำแหน่งของกล้องและเวกเตอร์ขึ้น เวกเตอร์ / คะแนนเหล่านี้จะถูกส่งผ่านไปยัง gluLookAt แพนและซูมนั้นแทบไม่น่าเชื่อ อย่างไรก็ตามฉันกำลังค้นหาการหมุนเกี่ยวกับจุดที่มองว่ามีปัญหามากกว่านี้ ฉันต้องการที่จะเขียน Camera.rotate ฟังก์ชั่นที่ใช้เวลา 2 มุมหนึ่งที่หมุนขึ้น / ลงและหนึ่งที่หมุนซ้าย / ขวาพร้อมทรงกลมจินตนาการว่าเป็นศูนย์กลางเกี่ยวกับการดูที่จุด มีวิธีง่าย ๆ ในการทำเช่นนี้? ฉันอ่านสั้น ๆ เกี่ยวกับควอเทอร์เนี่ยน แต่ฉันอยากจะดูว่ามีวิธีแก้ปัญหาที่ง่ายกว่านี้หรือไม่หากการสร้างฉากของฉันค่อนข้างง่าย

3
ทำไม pixel shaders ไม่ให้เราอ่านโดยตรงจาก framebuffer หรือ buffer ความลึก?
ให้ฉันลอง framebuffer หรือ deepbuffer ใน pixel shader เป็นคุณสมบัติที่มีประโยชน์มาก แม้เพียงแค่สามารถรู้ความลึกหรือสีของสิ่งใดก็ตามที่อยู่ด้านหลังพิกเซลปัจจุบันจะเป็นประโยชน์ ทำไมทั้ง OpenGL และ DirectX ไม่ให้ฉันทำเช่นนี้? ฉันคาดหวังว่าจะมีข้อ จำกัด ด้านฮาร์ดแวร์บางอย่าง แต่การผสมสีด้วยอัลฟาใช้สีใน framebuffer สำหรับการคำนวณแบบผสมผสานและการทดสอบ Z จะทดสอบบัฟเฟอร์ความลึกที่ตำแหน่งปัจจุบัน ทำไมไม่เพียงแค่เปิดเผยค่าเหล่านี้กับเราโดยตรง ฉันหวังว่าจะเห็นสิ่งนี้ในอนาคตหรือไม่
18 opengl  3d  directx  shaders 

2
ฉันจะแปลงการคลิกเมาส์เป็นรังสีได้อย่างไร
ฉันมีมุมมองที่ฉาย เมื่อผู้ใช้คลิกบนหน้าจอฉันต้องการคำนวณรังสีระหว่างระนาบใกล้และไกลที่ทำโครงการจากจุดเม้าส์ดังนั้นฉันจึงสามารถทำโค้ดสี่แยกเรย์กับโลกของฉันได้ ฉันใช้คลาสเมทริกซ์และเวกเตอร์และเรย์ของตัวเองและมันทำงานได้อย่างที่คาดไว้ อย่างไรก็ตามเมื่อฉันลองและแปลงรังสีเป็นพิกัดโลกไกลสุดของฉันเสมอเป็น 0,0,0 และดังนั้นรังสีของฉันไปจากการคลิกเมาส์ไปที่ศูนย์กลางของพื้นที่วัตถุมากกว่าผ่านมัน (พิกัด x และ y ใกล้และไกลเท่ากันพวกมันต่างกันเฉพาะในพิกัด z ซึ่งเป็นค่าลบของกันและกัน) GLint vp[4]; glGetIntegerv(GL_VIEWPORT,vp); matrix_t mv, p; glGetFloatv(GL_MODELVIEW_MATRIX,mv.f); glGetFloatv(GL_PROJECTION_MATRIX,p.f); const matrix_t inv = (mv*p).inverse(); const float unit_x = (2.0f*((float)(x-vp[0])/(vp[2]-vp[0])))-1.0f, unit_y = 1.0f-(2.0f*((float)(y-vp[1])/(vp[3]-vp[1]))); const vec_t near(vec_t(unit_x,unit_y,-1)*inv); const vec_t far(vec_t(unit_x,unit_y,1)*inv); ray = ray_t(near,far-near); ฉันทำอะไรผิด (คุณถอดจุดเมาส์ออกได้อย่างไร)

6
โครงร่าง OpenGL
ไม่ฉันไม่ต้องการ glPolygonMode ฉันกำลังค้นหาวิธีหนึ่งอาจเป็น GLSL shader ที่จะผลิตโครงลวดแบบย้อนยุคนั้นค้นหาวัตถุ ข้อเสนอแนะใด ๆ สิ่งที่คล้ายกับ Vector Tanks มี โซลูชันควรทำงานกับ OpenGL ES 2.0 ด้วยเช่นกัน คำแนะนำและพอยน์เตอร์ใด ๆ (ตราบใดที่ไม่ใช่ค่า NULL) ชื่นชม!
18 opengl 

1
Phong lighting - มีบางอย่างแปลก ๆ ที่มีแสง specular
ฉันนำแสงพงษ์มาใช้ ดูเหมือนว่าทุกอย่างจะทำงาน - พรูและทรงกลมก็สว่างตามที่คาดไว้ ฯลฯ แต่ฉันสังเกตเห็นบางสิ่งที่แปลกเกี่ยวกับแสงแบบส่องทางของแสงทิศทาง นี่คือภาพหน้าจอสองภาพ ครั้งแรก: ประการที่สอง: ในขณะที่คุณสามารถดูพื้นที่มากขึ้นมีแสงส่องสว่างเป็นพิเศษเมื่อกล้องอยู่ไกลจากวัตถุ นี่คือจุดสุดยอด shader: #version 330 core layout(location = 0) in vec3 vertexPos; layout(location = 1) in vec3 vertexNorm; layout(location = 2) in vec2 vertexUV; uniform mat4 MVP; uniform mat4 M; out vec2 fragmentUV; out vec3 fragmentNormal; out vec3 fragmentPos; void main() …

1
เกณฑ์ปกติเทียบกับแผนที่ปกติ
ฉันใช้ผู้นำเข้าสินทรัพย์ Assimp ( http://assimp.sourceforge.net/lib_html/index.html ) เพื่อแยกวิเคราะห์โมเดล 3 มิติ จนถึงตอนนี้ฉันก็แค่ดึงเวกเตอร์ปกติที่กำหนดไว้สำหรับแต่ละจุดยอดในตาข่ายของฉัน แต่ฉันก็ได้พบบทเรียนมากมายในแผนที่ปกติ ... เมื่อฉันเข้าใจมันสำหรับแผนที่ปกติเวกเตอร์ปกติจะถูกเก็บไว้ในแต่ละเท็กเซลของแผนที่ปกติและคุณดึงสิ่งเหล่านี้ออกจากพื้นผิวปกติใน shader เหตุใดจึงมีสองวิธีในการรับบรรทัดฐานซึ่งเป็นวิธีปฏิบัติที่ดีที่สุดและทำไม

1
สูตรแสง GLSL (ลดทอนสีและความเข้ม)
ฉันกำลังติดตั้งไฟจุดในเครื่องมือ Voxel ของฉันและฉันพยายามอย่างหนักเพื่อให้ได้แสงที่ดีจาก 100% ใกล้กับแหล่งกำเนิดแสงถึง 0% ที่รัศมีแสง ฉันมี 5 ข้อโต้แย้งสำหรับฟังก์ชั่น: สีอ่อน (Vec3) ความเข้มของแสง (ระยะทางจากแสงจนถึงระยะทางที่จุดตกหล่น 100%) ระยะทางจากแสงถึงชิ้นส่วน มุมจากชิ้นส่วนปกติถึงแสง ตำแหน่งของแสง ทุกคนสามารถผลักฉันไปในทิศทางที่ถูกต้องเพื่อสร้างฟังก์ชั่นสำหรับการคำนวณสีชิ้นส่วนได้หรือไม่? ภาพหนึ่งในการทดลองของฉัน: แก้ไข (รหัสปัจจุบันที่ขอโดย Byte) โปรดทราบว่านี่เป็นเพียงรหัสการทดสอบจากฝั่งฉัน ฉันได้รับข้อมูลจากเว็บไซต์และมันใช้งานได้ แต่ไกลจากความสมบูรณ์แบบ : void main() { // Light color vec3 torchColor = vec3(1.0f, 1.0f, 1.0f); float lightAdd = 0.0f; for (int i=0; i<5; i++) { vec3 …
17 opengl  glsl  lwjgl  lighting  pixel 

2
OpenGL: ที่ไหนที่ฉันใส่ shoud อยู่ที่ไหน
ฉันพยายามเรียนรู้ OpenGL ES 2.0 และฉันสงสัยว่าอะไรคือวิธีปฏิบัติที่ใช้กันทั่วไปมากที่สุดในการ "จัดการ" เฉดสี ฉันถามคำถามนี้เพราะในตัวอย่างที่ฉันพบ (เช่นที่รวมอยู่ในการสาธิต API ที่มาพร้อมกับ android sdk) ฉันมักจะเห็นทุกอย่างในชั้นเรียน GLRenderer และฉันค่อนข้างแยกสิ่งต่าง ๆ เพื่อที่ฉันจะได้ ตัวอย่างเช่นวัตถุ GLImage ที่ฉันสามารถนำกลับมาใช้ใหม่เมื่อใดก็ตามที่ฉันต้องการวาดรูปสี่เหลี่ยมพื้นผิว (ฉันกำลังมุ่งเน้นไปที่ 2D เท่านั้นในขณะนี้) เช่นเดียวกับที่ฉันมีในรหัส OpenGL ES 1.0 ของฉัน ในเกือบทุกตัวอย่างที่ฉันพบ shaders ถูกกำหนดให้เป็นคุณลักษณะของคลาส ตัวอย่างเช่น: public class Square { public final String vertexShader = "uniform mat4 uMVPMatrix;\n" + "attribute vec4 aPosition;\n" + …

1
GLSL ทั้งหมดในโปรแกรม shader เดียวหรือหลายโปรแกรม?
ฉันกำลังสาธิตการใช้งาน 3D โดยใช้ OpenGL และฉันสังเกตว่า GLSL นั้นค่อนข้าง "จำกัด " (หรือเป็นแค่ฉันเอง) อย่างไรก็ตามฉันมีวัสดุหลายประเภท วัสดุบางอย่างมีสีโดยรอบและกระจายวัสดุบางอย่างมีแผนที่บดเคี้ยวโดยรอบบางคนมีแผนที่ specular และชนแผนที่ ฯลฯ มันจะดีกว่าที่จะสนับสนุนทุกอย่างในหนึ่งคู่ยอด / ชิ้นส่วนแยกหรือดีกว่าที่จะสร้างยอดยอดหลายชิ้นและเลือกพวกเขาขึ้นอยู่กับวัสดุที่เลือกในปัจจุบัน? กลยุทธ์ shader ทั่วไปใน OpenGL หรือ D3D คืออะไร
17 opengl  3d  shaders  glsl 

2
ฉันจะจำลองจานสีที่ จำกัด (256) ใน OpenGL ได้อย่างไร
บน Twitter ฉันพบภาพหน้าจอของเกมที่กำลังพัฒนา: ภาพด้านบนดูเหมือนจะไม่มีข้อ จำกัด เรื่องสี แต่ภาพอีกสองภาพที่ด้านล่างมีจานสี 256 สี ฉันต้องการบรรลุผลที่คล้ายกันในเกมของฉัน (ฉันใช้ OpenGL) ฉันจะทำเช่นนั้นได้อย่างไร
16 opengl  webgl 

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