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

WebGL เป็น Javascript API สำหรับการแสดงผลกราฟิก 3 มิติ / 2D เชิงโต้ตอบบนองค์ประกอบผ้าใบ HTML5 มันขึ้นอยู่กับ OpenGL ES 2.0

10
MMOs ที่ใช้เบราว์เซอร์ (WebGL, WebSocket) [ปิด]
คุณคิดว่าเป็นไปได้หรือไม่ในทางเทคนิคที่จะเขียนไคลเอนต์ MMO สามมิติที่มีคุณสมบัติครบถ้วนด้วย Browser JavaScript - WebGL สำหรับกราฟิกและ WebSocket สำหรับระบบเครือข่าย? คุณคิดว่า MMO ในอนาคต (และโดยทั่วไปเกม) จะเขียนด้วย WebGL หรือไม่ ประสิทธิภาพ JavaScript ของวันนี้อนุญาตหรือไม่ สมมติว่าทีมพัฒนาของคุณคือคุณในฐานะนักพัฒนาและผู้สร้างโมเดลอีกคน (ศิลปิน) คุณจะใช้ไลบรารีเช่นSceneJSสำหรับเกมหรือเขียน WebGL โดยตรงหรือไม่ หากคุณต้องการใช้ห้องสมุด แต่ไม่ใช่ SceneJS โปรดระบุว่า UPDATE (กันยายน 2555): RuneScape ซึ่งเป็น MMORPG ที่ใช้เบราว์เซอร์ 3D ยอดนิยมที่ใช้ Java Applets จนถึงขณะนี้ได้ประกาศว่าจะใช้ HTML5 สำหรับลูกค้าของพวกเขา ( แหล่งที่มา ) Java (ซ้าย) และ HTML5 …
29 mmo  webgl  websocket 

3
มีวิธีใช้จำนวนไฟโดยพลการในชิ้นส่วน shader?
มีวิธีการส่งผ่านจำนวนสถานที่แสง (และสี) โดยพลการสำหรับชิ้นส่วน shader และวนรอบพวกเขาใน Shader? ถ้าไม่เช่นนั้นไฟหลายดวงควรถูกจำลองอย่างไร? ตัวอย่างเช่นในแง่ของการกระจายแสงทิศทางคุณไม่สามารถส่งผ่านน้ำหนักรวมสำหรับ shader ได้
19 lighting  webgl 

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

4
ความแตกต่างระหว่าง“ บัฟเฟอร์” และ“ อาร์เรย์” ใน OpenGL หรือไม่
เมื่อฉันอ่าน doc บน webGL หรือ OpenGL ฉันสามารถเห็นรูปแบบบางอย่างในวิธีการใช้ชื่อฟังก์ชั่นและวัตถุ แต่ฉันไม่เข้าใจความแตกต่างระหว่างวัตถุบัฟเฟอร์และอาร์เรย์ มี "วัตถุบัฟเฟอร์จุดสุดยอด", "วัตถุอาร์เรย์จุดสุดยอด" และแม้กระทั่ง "บัฟเฟอร์อาร์เรย์" หรือ "arraybuffer" บางชนิด ในบริบท OpenGL บางสิ่งเมื่อเป็น "อาเรย์" และเมื่อมันควรจะเรียกว่า "บัฟเฟอร์" แทน?
12 opengl  webgl 

2
ฉันจะบอกให้ shader ชิ้นส่วนไม่เขียนพิกเซลได้อย่างไร
ใน WebGL ฉันต้องการส่ง quad space space ผ่านหน้าจอที่ได้รับการประมวลผลโดย shader แฟรกเมนต์ แต่ให้ shader แฟรกเมนต์เขียนเฉพาะพิกเซลภายใต้เงื่อนไขบางอย่างเท่านั้น (พูดว่า ... ว่ามันอยู่ในวงกลมหรือ พิกเซลเป็นของด้านบวกของ halfspace ที่กำหนดโดยสมการเส้นโค้งหรือบางสิ่ง) เป็นไปได้ภายในตัวแบ่งส่วนที่จะพูดว่า "อย่าเขียนพิกเซล" หรือไม่? ฉันรู้ว่าวิธีนี้สามารถทำได้โดยใช้วิธีการอื่น ๆ เช่นการผสมอัลฟ่า, การเรนเดอร์นี้ก่อนและให้มันใส่สีพื้นหลังที่ไม่ต้องการวาดพิกเซลหรืออาจจะทำเคล็ดลับบางอย่างกับบัฟเฟอร์ความลึก ฉันยังรู้ว่าฉันสามารถสร้างเรขาคณิตหลายรูปแบบเพื่อให้ตรงกับที่ฉันต้องการจะแสดง มีวิธีที่จะทำให้ shader ส่วนเลือกที่จะไม่เขียนพิกเซลเลยหรือไม่?

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

3
วิธีซ่อนโครงร่างหลังการประมวลผลเมื่อ / ตำแหน่งที่ซ่อนตาข่าย
ฉันกำลังทำงานเกี่ยวกับการตั้งค่าเค้าร่างที่ใช้งานอยู่ในเอนจิ้น 3 มิติของฉันเอฟเฟกต์ไฮไลท์สำหรับตัวละคร 3 มิติที่เลือกหรือฉากในหน้าจอ หลังจากทำงานกับ stencil buffer และรับผลลัพธ์ที่น่าพอใจ (ปัญหาเกี่ยวกับรูปร่างเว้าความหนาของร่างเนื่องจากระยะห่างจากกล้องและความไม่สอดคล้องระหว่างเดสก์ท็อปและแล็ปท็อปของฉัน) ฉันเปลี่ยนไปใช้การตรวจจับขอบและการสุ่มเฟรมบัฟเฟอร์ ค่อนข้างพอใจกับ อย่างไรก็ตามฉันไม่สามารถซ่อนเค้าร่างเมื่อตาข่ายที่เลือกอยู่ด้านหลังตาข่ายอื่น สิ่งนี้สมเหตุสมผลสำหรับกระบวนการของฉันเนื่องจากฉันเพียงแค่สร้างโครงร่าง 2 มิติจากเฟรมบัฟเฟอร์หลังจากเรนเดอร์ส่วนที่เหลือของฉาก การจับภาพหน้าจอสองรายการของฉันอยู่ด้านล่าง ที่แรกก็คือเค้าร่าง "ดี" ที่สองคือที่เห็นร่างอยู่เหนือตาข่ายที่บล็อกแหล่งที่มาเค้าร่าง กระบวนการเรนเดอร์ทำงานดังนี้: 1) วาดเฉพาะอัลฟาของตาข่ายที่ไฮไลต์เพื่อบันทึกภาพเงาดำในบัฟเฟอร์เฟรม (framebuffer1) 2) ส่ง texture จาก framebuffer1 ไปยัง shader ตัวที่สองซึ่งทำการตรวจจับขอบ จับขอบใน framebuffer2 3) แสดงฉากทั้งหมด 4) แสดงพื้นผิวจาก framebuffer2 ที่ด้านบนของฉาก ฉันมีแนวคิดเล็กน้อยเกี่ยวกับวิธีการทำให้สำเร็จและหวังว่าจะได้รับคำติชมเกี่ยวกับความถูกต้องของพวกเขาหรือวิธีการที่ง่ายกว่าหรือดีกว่า ก่อนอื่นฉันคิดว่าจะทำให้ฉากทั้งหมดเป็นบัฟเฟอร์เฟรมและเก็บเงาที่มองเห็นได้ของตาข่ายที่ถูกไฮไลต์ในช่องอัลฟา (สีขาวทั้งหมดจะบันทึกที่ที่ตาข่ายที่ไฮไลต์มองเห็น) จากนั้นฉันจะทำการตรวจจับขอบบนช่องอัลฟาทำการเรนเดอร์เฟรมบัฟเฟอร์ฉากแล้วทำการเรนเดอร์ขอบด้านบน ส่งผลให้บางสิ่งเช่นนี้: เพื่อให้บรรลุผลนี้ฉันคิดว่าการตั้งค่ากำหนดเฉพาะในระหว่างการส่งเรนเดอร์ของวัตถุที่ไฮไลต์ที่จะวาดสีดำทั้งหมดในอัลฟาสำหรับพิกเซลที่มองเห็นได้ แนวคิดที่สองของฉันคือการใช้กระบวนการเรนเดอร์ปัจจุบันตามที่ระบุไว้ข้างต้น แต่ยังเก็บพิกัด X, Y …


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

4
ไม่เข้าใจพิกัดพื้นผิว UV เหล่านี้ (ช่วงไม่เท่ากับ 0.0 ถึง 1.0)
ฉันกำลังพยายามวาดวัตถุ 3 มิติแบบง่ายที่สร้างโดย Google SketchUp 8 Pro ลงในแอป WebGL ของฉันแบบจำลองนั้นเป็นรูปทรงกระบอกที่เรียบง่าย ฉันเปิดไฟล์ที่ส่งออกและคัดลอกตำแหน่งจุดยอดดัชนีบรรทัดฐานและพิกัดพื้นผิวเป็นไฟล์. json เพื่อให้สามารถใช้กับจาวาสคริปต์ได้ ดูเหมือนว่าทุกอย่างจะทำงานได้ดียกเว้นพิกัดพื้นผิวที่มีค่ามากเช่น 46.331676 และค่าลบ ตอนนี้ฉันไม่รู้ว่าฉันผิด แต่พิกัดพื้นผิว 2D ไม่ควรอยู่ในช่วงตั้งแต่ 0.0 ถึง 1.0 เท่านั้นใช่หรือไม่ การวาดแบบโดยใช้พิกัดพื้นผิวเหล่านี้ทำให้ฉันดูแปลกประหลาดอย่างสมบูรณ์และฉันสามารถเห็นพื้นผิวได้อย่างถูกต้องเมื่อฉันอยู่ใกล้มาก ลดขนาดและทำซ้ำไปเรื่อย ๆ ทั่วทั้งใบหน้าของนางแบบ (ใช่ฉันใช้ GL_REPEAT กับสิ่งห่อหุ้มพื้นผิวนั้น) สิ่งที่ฉันสังเกตคือถ้าฉันได้รับพิกัดเหล่านี้ทั้งหมดและหารพวกเขาด้วย 10 หรือ 100 ฉันได้ดู "ปกติ" มาก แต่ก็ยังไม่อยู่ในช่วง 0.0 ถึง 1.0 นี่คือไฟล์ json ของฉัน: http://pastebin.com/Aa4wvGvv นี่คือ GLSL Shaders ของฉัน: …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.