Questions tagged «webgl»

WebGL是一个Javascript API,用于在HTML5 canvas元素上呈现交互式3D / 2D图形。它基于OpenGL ES 2.0。

10
基于浏览器的MMO(WebGL,WebSocket)
您认为使用浏览器JavaScript(用于图形的WebGL和用于网络的WebSocket)编写成熟的3D MMO客户端在技术上是否可行? 您是否认为将来的MMO(以及一般游戏)将使用WebGL编写? 当今的JavaScript性能是否可以做到这一点? 假设您的开发团队是您作为开发人员,并且是另一个模型创建者(艺术家)。您将使用诸如SceneJS之类的库进行游戏,还是直接编写WebGL?如果要使用库而不是SceneJS,请指定哪个。 更新(2012年9月): RuneScape是一种非常流行的基于3D浏览器的MMORPG,迄今为止已使用Java Applets宣布已将HTML5用作其客户端(源)。 Java(左)和HTML5(右) 更新(2013年6月):我编写了基于WebGL / WebSocket的MMO的原型:https : //github.com/alongubkin/xylose
29 mmo  webgl  websocket 


2
如何在OpenGL中模拟有限的(256)调色板?
在Twitter上,我找到了正在开发的游戏的以下屏幕截图: 顶部的图像似乎没有任何颜色限制。但底部的其他两张图片则具有256色调色板。 我想达到类似的效果我的比赛(我使用OpenGL)。我该怎么办?
16 opengl  webgl 

4
OpenGL中“缓冲区”和“数组”之间的区别?
当我在webGL或OpenGL上阅读文档时,可以看到一些有关如何使用函数和对象名称的模式。但是我不明白缓冲区对象和数组之间的区别。 有“顶点缓冲区对象”,“顶点数组对象”,甚至某种“缓冲区数组”或“ arraybuffer”。 在OpenGL上下文中,什么时候是“数组”,什么时候应该叫做“缓冲区”?
12 opengl  webgl 

2
如何告诉片段着色器不写特定像素?
在WebGL中,我想发送一个由片段着色器处理的屏幕空间四边形,但是让片段着色器仅在特定条件下写出一个像素(例如……它在一个圆圈内,或者像素属于由曲线方程式等定义的半空间的正侧)。 片段着色器中是否可以说“不写像素”? 我知道这可以使用其他各种方法来完成,例如Alpha混合,先渲染然后将其放置在不想绘制像素的背景颜色上,或者对深度或模板缓冲区进行一些技巧。我也知道我可以创建一堆几何体来匹配我要渲染的几何体。 是否有办法使片段着色器选择根本不写像素?


3
在隐藏网格的位置/位置如何隐藏后处理的网格轮廓
我正在3D引擎中设置活动轮廓,为选定的3d角色或屏幕上的风景设置高光效果。在使用模板缓冲区并获得一些不满意的结果(形状问题为凹形,由于距相机的距离导致轮廓线厚度以及台式机和笔记本电脑之间的不一致)后,我切换到边缘检测和帧缓冲区采样并得到了轮廓很满意。 但是,当选定的网格位于另一个网格之后时,我无法隐藏轮廓。考虑到我的过程,这很有意义,因为在渲染场景的其余部分之后,我只是从帧缓冲区中渲染了2d着色器轮廓。 下面是我的结果的两个屏幕截图。第一个是“好”轮廓,第二个是在阻挡轮廓源的网格上看到轮廓的位置。 渲染过程如下所示:1)仅绘制突出显示的网格的alpha,在帧缓冲区(framebuffer1)中捕获黑色轮廓。 2)将纹理从framebuffer1传递到执行边缘检测的第二个着色器。在framebuffer2中捕获边缘。 3)渲染整个场景。 4)在场景顶部从framebuffer2渲染纹理。 我对如何完成工作有一些想法,希望能收到关于其有效性或更简单或更佳方法的反馈。 首先,我考虑过将整个场景渲染到帧缓冲区,并将突出显示的网格的可见轮廓存储在alpha通道中(所有白色保存,突出显示的网格可见)。然后,我将在alpha通道上执行边缘检测,渲染场景帧缓冲区,然后在顶部渲染边缘。结果是这样的: 为此,我想到了仅在突出显示对象的渲染过程中设置一个定义,该定义将为所有可见像素在alpha中绘制所有黑色。 我的第二个想法是使用上面概述的当前渲染过程,而且在渲染选定网格的轮廓时,还将X,Y和Z坐标存储在framebuffer1的R,G和B通道中。边缘检测将被执行并存储在framebuffer2中,但是我会将RGB / XYZ值从alpha的边缘传递到轮廓。然后,在渲染场景时,我将测试坐标是否在framebuffer2中存储的边缘内。如果是这样,我将测试当前片段的深度,以确定它是在从RGB通道提取的坐标之前还是之后(转换为相机空间)。如果片段在深度坐标之前,则片段将正常渲染。如果片段在后面,则将其呈现为纯轮廓颜色。 我正在为该项目使用LibGDX,并且希望支持WebGL和OpenGL ES,因此我没有涉及几何着色器或更新的GLSL函数的解决方案。如果有人可以评论我提出的方法或提出更好的建议,我将非常感激。


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)
我正在尝试将由Google SketchUp 8 Pro生成的简单3D对象绘制到我的WebGL应用程序上,该模型是一个简单的圆柱体。 我打开了导出的文件,并将顶点的位置,索引,法线和纹理坐标复制到一个.json文件中,以便能够在javascript上使用它。除了具有一些非常大的值(例如46.331676和负值)的纹理坐标外,其他所有内容似乎都可以正常工作。现在我不知道我是否错了,但是2D纹理坐标不应该仅在0.0到1.0的范围内吗? 好吧,使用这些纹理坐标绘制模型会给我一种完全怪异的外观,并且只有当我非常接近模型(不是我自己,凸轮)时,我才能正确看到纹理,就像纹理疯狂一样减小尺寸,并在模型的各个面上无限重复。(是的,我在那个纹理包裹物上使用了GL_REPEAT) 我注意到的是,如果获得所有这些坐标并将它们除以10或100,我将获得“正常”外观,但仍不在0.0到1.0范围内。 这是我的json文件:http://pastebin.com/Aa4wvGvv 这是我的GLSL着色器:http : //pastebin.com/DR4K37T9 这是SketchUp导出的.X文件:http : //pastebin.com/hmYAJZWE 我也尝试使用XNA绘制此模型,但仍然无法正常工作。使用此HLSL着色器: http //pastebin.com/RBgVFq08 我尝试将同一模型导出为不同的格式collada,fbx和x。所有这些产生相同的结果。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.