Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
 Opengl_IT技术博客_编程技术问答 - 「Fatal编程技术网」

Opengl win32服务中纹理的屏幕外渲染 我尝试编写一个可以渲染到纹理的C++窗口服务。我已经将代码作为常规控制台应用程序使用,但作为服务运行时wglGetProcAddress()返回NULL

有人能告诉我这是否可能,如果可能,我需要做什么才能使OpenGL在服务流程中工作 编辑: 我还没有在Vista下使用它,但它在XP下确实可以使用。OpenGL需要桌面访问来创建渲染上下文,而服务默认情况下没有桌面访问权限 您需要以交互模式运行服务。为此,请进入管理工具中的服务属性。在您设置服务的登录用户的地方,您将有一个选项以交互模式运行服务,或者类似于“允许服务与桌面交互”。您也可以尝试以其他用户的身份记录服务 如果您正在使用.Net IIS应用程序,则还必须强制服务器的受管部分以其他用户身

在OpenGL中绘制视频

在OpenGL中播放压缩视频有好的解决方案吗 它需要 跨平台(Windows和MacOSX) 渲染到纹理(最好但不是100%需要) 比宾克便宜 有什么想法吗?可以用于在OpenGL场景中渲染小部件(包括视频播放器)。它有一个叫做声子的多媒体框架,可以播放视频和音频 看这个 Qt是跨平台的,现在在LGPL下获得许可。我推荐使用 以下是好处: 完全开放、免费且未载入专利的规范 免费工作库实现(编码器/解码器)和源代码示例,可在BSD风格许可证下获得 不太破旧的文件 便携式 解码器可以让你解码

Opengl 片段着色器眼睛空间未缩放深度坐标

我试图在GLSL片段着色器中使用场景中对象的未缩放(与前剪裁平面的真实距离)距离。gl_FragCoord.z值比我预期的要小。在我的顶点着色器中,我只使用ftTransform()来设置gl_位置。当我期望值在15到20之间时,我看到值在2到3之间 我怎样才能得到真正的眼睛空间深度? 谢谢 将您想要的任何内容作为顶点着色器的变量传递下去 片段着色器中可用的Z值已根据Z-near/Z-far(从投影矩阵)和deptrange进行了规格化。所以这不是你想要的。从技术上讲,您可以尝试通过还原顶点着色

如何将实时视频源设置为OpenGL渲染目标或帧缓冲区?

我想从一台摄像机或2台摄像机上拍摄一段实时视频,然后在上面进行分屏渲染。如何捕获视频的输入 我发现了一些使用pbuffer的旧代码。。这仍然是最好的方法吗 我想他们的产品很大程度上取决于连接接口,不管是USB还是火线还是其他什么 谢谢 有一个可以处理网络/摄像机的抽象层。有一个可以处理网络/摄像机的抽象层

Opengl GPU渲染到球体上

我正在尝试编写一个优化代码,使用OpenGL将3D场景渲染到球体上,然后在屏幕上显示展开的球体,即生成纯反射球体的平面贴图。在数学方面,我想制作一个投影图,其中x轴是极角,y轴是方位角 我试图通过将相机放置在球体探针的中心,并在周围进行平面拍摄,从而用平截头体的平面瓷砖近似球形四边形。然后,我可以使用这个作为纹理应用于扭曲的平面面片 在我看来,这是一个相当乏味的方法。我想知道是否有办法使用着色器或一些GPU智能方法来实现这一点 多谢各位 当你费心构建模型、拍摄平面照片、应用非仿射变换并将整个过程

Opengl 现代GLSL中的每像素照明?

我在寻找一个合适的简单例子 现在我有一个基于教程的东西,但是我没有看到三角形中间的变化。看起来每个三角形都会改变颜色,但只会改变整个三角形 out vec3 vertex_normal; out vec3 vertex_light_position; 。。在顶点着色器上 与 在片段着色器上: float diffuse_value = MAX(dot(vertex_normal, vertex_light_position), 0.0); gl_FragColor =

在OpenGL中创建直角三棱柱体

我正在学习OpenGL(特别是使用JOGL),并试图创建一个直角三棱柱。我了解到,可以使用glutWire/SolidCylinder和少量切片(显然,三角形为3片)创建等边棱镜 所以我想知道是否有其他方法来制作棱柱体,或者是否有其他方法来缩放等边三角形以将其变成直角三角形?我还发现(至少在JOGL中,不知道其他地方)圆柱体不能正常工作-端板的旋转角度与侧面不同,给你一个非常奇怪的形状 所以,我最后制作了一个方法,创建一个单位的直角三棱柱,然后根据需要旋转和缩放。可能有更好的方法可以做到这一点,

Opengl 使用着色器更改颜色

我正在编写一个延迟着色器,作为第一步之一,为了熟悉GLSL并使用着色器和帧缓冲区,我正在尝试通过着色器更改网格的颜色。 我通过使用保存附件的数组调用glDrawBuffers,然后将纹理绑定到我的帧缓冲区,将其链接到其中一个缓冲区: glReadBuffer(GL_NONE); GLint color_loc = glGetFragDataLocation(pass_prog,"out_Color"); GLenum draws [1]; draws[color_

OpenGL:使用顶点数组绘制立方体会导致图形故障

当尝试在OpenGL中使用顶点数组(而不是使用即时模式渲染)绘制以下四边形时,我得到了图片中显示的图形故障(线段),可以在下面的第二个链接中找到。这条线似乎向上延伸到无穷远 GLdouble vertices[] = { // back 0.0, 0.0, 0.0, si, 0.0, 0.0, si, -si, 0.0, 0.0, -si, 0.0, // front 0.0, 0.0, si, 0.0, -si, si,

Opengl 为什么glGetUniformLocation让我失望?

几天前我找到了Gwen,并认为它看起来是我项目的完美GUI工具包。但是哦,亲爱的,看看渲染器中所有的OpenGL2代码。所以我想我应该写一个OpenGL3渲染器,这样我就可以实际使用它了,但是我对CG比GLSL更熟悉,我一直在写这个示例。我想如果我能把这些统一变量设置好的话,基本上就可以完成了 着色器编译和链接没有问题。对于正交矩阵和纹理采样器,我将其缩小为glGetUniformLocation返回-1,但我不知道它为什么会这样做。典型的问题似乎是,如果你没有实际使用它们,它们会得到优化,但我

使对象停留在屏幕上OpenGL SFML

我正在用OpenGL画一个三角形,你可以上下左右移动。我正在使用SFML作为我的窗口框架,我想知道如何将三角形保持在窗口中,而不让它移出窗口,即如果它一直移动到顶部,我希望它不要超过高度,这在很大程度上取决于投影矩阵。如果使用透视图,则需要获得它的上限/下限,它们将取决于Z距离;使用正交矩阵时,Z被挤压,然后对照它们进行检查更容易-如果对象关闭-禁止移动。是的,我使用gluPerspective,那么如何获得高/低边界?gluPerspective代码如下:Z值均匀分布在近剪裁平面和远剪裁平面之

Opengl rds.x+0.5\n\ UVCoords.y=0.5*ProjCoords.y+0.5\n\ 浮动深度=纹理(gShadowMap,UVCoords).x\n\ 如果(深度0){\n\ DiffuseColor=vec4(Light.Color,1.0f

rds.x+0.5\n\ UVCoords.y=0.5*ProjCoords.y+0.5\n\ 浮动深度=纹理(gShadowMap,UVCoords).x\n\ 如果(深度0){\n\ DiffuseColor=vec4(Light.Color,1.0f)*Light.DiffuseIntensity*扩散因子;\n\ \n\ vec3 VertextoPeye=规格化(gEyeWorldPos-WorldPos0);\n\ vec3 LightReflect=规格化(反射(光方向,法线));

在opengl中在单个像素内绘制三角形

可以在单个像素内绘制三角形吗 例如,当我将三角形顶点的坐标指定为A0、1、B0、0和C1、0时。我根本没有看到三角形被渲染。我希望看到像素内有一个小三角形 有什么我遗漏的吗?一个像素是一个点,三角形如何适合一个点 它是图像的绝对最小单位 为什么您认为可以沿对角线渲染半个像素?像素处于打开或关闭状态,不能是任何其他状态。您的假设基于什么OpenGL规范,大多数3D库都会根据填充了多少亚像素信息来决定渲染像素。但像素不能部分绘制,它要么打开,要么关闭。像素就像一个灯泡,你可以“点亮半个灯泡” 无论如

OpenCL与OpenGL互操作性的优势

当我们可以获得良好的速度与OpenGL,因为它使用纹理内存和许多内置的图形功能(混合,mip地图等) 为什么我们需要OpenCL(由于OpenCL缓冲区的缓慢)与OpenGL的互操作性,仅仅因为我们可以将渲染与计算结合起来,或者有任何好的优势,比如性能 我只是想知道这项技术的主要优点,有没有公开发表的论文表明,通过使用OpenGL与OpenCL的互操作性,他们的性能得到了提高,或者有任何证据表明,在速度和质量方面,OpenGL的性能得到了提高。OpenGL就是关于实时光栅化图形的。由于它的范围有

Opengl glGetShaderiv()GL_COMPILE_状态返回GL_FALSE

我尝试在另一台计算机上打开Visual Studio项目。我不确定这是否相关,但最初我在查找MSAA像素格式时遇到问题,直到我将WGL_SAMPLES_ARB参数从8更改为4 然而,屏幕上的图像是黑白的,没有响应任何矩阵变换 我正在使用OpenGL SuperBible第5版中的GLShaderManager代码。在调用glCompileShader()之后,它使用GL\u COMPILE\u STATUS参数调用glGetShaderiv()。我设置了一个断点,确信它返回GL_FALSE 这不

Opengl openframework示例经过编译,但在运行时会在许多地方崩溃

以前我明确使用opengl和opencv,它们在我的计算机上运行良好,因此我确信这不是因为任何图形卡问题。我正在尝试的是openframework,我已经成功编译了这个库。同样,该示例编译后100%正确,但当我运行该应用程序时,它会崩溃 经过调查,我找到了它被撞坏或被侵犯的地方 示例为\examples\video\videoGrabberExample videoTexture.loadData(videoInverted, camWidth,camHeight, GL_RGB); 在进

Opengl 第四纹理=分割错误

每次加载第四个纹理时,我都会出现分割错误——我指的是文件名,什么类型的纹理并不重要。我检查了GL\u纹理\u堆栈大小的值,结果是10,比4要多,不是吗 以下是代码片段: 从png加载纹理的函数 实际载荷 static GLuint textures[4]; static void gl_init() { (...) //setting up OpenGL /* loading textures */ textures[0] = gl_loadTexture("imag

OpenGL VBO、VAO、立方体和颜色

我目前正试图了解VBO,我遇到了一些问题 我使用的是位置、颜色和法线的交错数组。然而,当我开始画图时,显示的只是白色 这是我的阵列的结构: GLfloat position[3]; GLfloat normal[3]; GLfloat color[4]; 代码如下: 初始化: glGenBuffers(1, &arrays[0]); glBindBuffer(GL_ARRAY_BUFFER, arrays[0]); glBufferData(GL_ARRAY_BUFFER, 125*

Opengl LibGDX移动旋转摄影机

我的应用程序是使用LibGDX构建的,我需要相机能够旋转,也可以由用户移动,以及能够缩放。“我的相机”用于移动和缩放相机的控件工作得很好,但是,当相机旋转时,相机将根据该旋转进行移动。例如,如果将相机向左旋转45度,并且用户向右拖动以移动相机,则相机将向右上移动,因为此时相机的右侧正指向右上角。相反,我需要相机始终相对于屏幕/用户输入移动,而不管其旋转 对于这个问题,我有一个解决方案,那就是简单地使用“世界坐标”来定位相机,而不是基于我现在尝试使用的“窗口坐标”。不过,这会给用户带来非常不愉快的

Opengl 从深度重建世界位置是错误的

我正在尝试实现延迟着色/照明。为了减少我使用的缓冲区的数量/大小,我想稍后使用深度纹理重建世界位置 我通过将像素的坐标乘以投影矩阵的逆和相机矩阵的逆来实现这一点。这种方法行得通,但位置有点不合适。以下是采样世界位置纹理的绝对差异: 作为参考,这是我在第二遍片段着色器中使用的代码: vec2 screenPosition_texture = vec2((gl_FragCoord.x)/WIDTH, (gl_FragCoord.y)/HEIGHT); float pixelDepth = text

Renderbuffers大于窗口大小-OpenGL

我正在尝试绘制一个大于屏幕大小(即320x480)的渲染缓冲区(512x512) 在执行glReadPixels后,图像看起来是正确的,除非图像的尺寸超过屏幕尺寸-在本例中,超过320水平和480垂直。是什么导致这种异常?有什么我遗漏的吗? 当窗口大小>=renderbuffer的大小时,此代码工作得非常好 渲染到缓冲区的示例图像&glReadPixel'd: 答案是这样的 更改此行: bglBindFramebuffer(BGL_RENDERBUFFER,canvasFrameBuffer)

Opengl 将ARB着色器转换为GLSL

我找到了一对用ARB编写的着色器。我需要帮助 转换GLSL(1.2)中的那些。我想扩展一个项目 使用那些ARB着色器,但是学习GLSL我认为 将是easiser habe GLSL着色器,这就是为什么我需要 转化。 我试图改变他们,但我知道我做错了什么。 有人能帮我详细解释一下吗 那些ARB着色器并提供转换 ---原始ARB v1.0着色器---- 顶点着色引擎 # 片段着色器 # 我的atempt无法转换它们: /////////顶点着色器////////// //#version 120

Opengl 我在看误会

假设我有以下设置: glBegin(GL_TRIANGLE_STRIP); glTexCoord2f(0,0); glVertex3f(-10, 0, 0); glTexCoord2f(1,0); glVertex3f(10, 0, 0); glTexCoord2f(0,1); glVertex3f(-10, 0, 5); glTexCoord2f(1,1); glVertex3f(10, 0, 5); glEnd(); 我做了以下几件事 gluLookAt(0,0,10, 0,5,0, 0

Opengl 无法使用GLDraweElements()获取输出(&;glmultipaurements()

我正在构建一个图形应用程序,用户可以通过单击画布指定顶点,然后使用顶点绘制多边形 该应用程序支持直线、三角形和多边形模式。绘制直线和三角形是通过计算点击次数来完成的。然后创建顶点数组,将数据绑定到缓冲区,并使用glDrawArrays()进行渲染。棘手的是多边形模式。用户可以指定任意数量的顶点,并单击鼠标右键触发绘图。我最初计划使用glmultipaurements,但不知何故,我没有得到任何输出。因此,我尝试在循环中调用glpaurements()。还是没有运气。我搜索了很多并阅读了很多关于在

Opengl 在阴影贴图中查找值

当深度缓冲区纹理为2D纹理时,为什么sampler2DShadow的glsl函数采用vec3 float texture(sampler2DShadow sampler, vec3 P, [float bias]); 此纹理访问不会返回阴影贴图下的真实值,但实际上点.z和贴图中位置(点.x,点.y)0或1(用于最近过滤)上的值之间的比较结果,或使用线性过滤时介于两者之间的值 请注意,GL\u纹理\u比较\u模式​用于或应启用

Opengl 斜线输出的位图写入

我的代码如下所示,在尝试编写奇数大小为250x250像素的位图图像时遇到了一些问题。当我用一个被3整除的面积写它时,例如160x160,一切都很好。我已经花了几个小时试图让250x250和其他奇怪的区域正确写入,但它们就是不正确,图像是对角的,其中一半的颜色位错误 int screen\u save\u part(字符串文件名,无符号x,无符号y,无符号w,无符号h)//假设本机整数是小尾数 { 无符号sz=w*h; FILE*bmp=fopen(filename.c_str(),“wb”)

Opengl 材料、纹理和光的相互作用

我已经编写了一个简单的3D模型查看器(使用OpenGL3.2和GLSL),它可以加载和渲染U3D模型(可以是独立的,也可以是从PDF内部)。它基本上可以渲染所有不同的网格,通过顶点颜色、纹理或材质绘制网格,并相应地照亮网格 然而,我还没有完全弄清楚什么是组合材质和纹理的“预期方式”。我看过一些教程,其中灯光对象具有材质(具有漫反射/镜面反射/环境光组件以及不透明度和光泽度因子),还有一些教程使用纹理并对其进行照明,但我还没有找到任何关于组合时预期行为的好资源(即网格具有材质和一个或多个纹理层)

Opengl 世界空间中的自定义点光源(LWJGL/GLSL)

我正在尝试在世界空间中实现自定义灯光(我知道,建议在视图空间中实现,但我有自己的理由),在我正在编程的一个小游戏中使用LWJGL和GLSL。为此,我需要着色器中世界空间中的顶点位置。我知道,我可以在顶点着色器中将它们计算为modelMatrix*gl_顶点。由于modelMatrix在着色器中不可访问,因此我通过将ModelViewMatrix与viewMatrix的倒数相乘来计算它 顶点着色器代码: uniform mat4 inverseViewMatrix; varying vec3 no

如何在openGL中设置投影平面?

我是OpenGL的新手。我有一个问题:我有一个相当复杂的场景,我从前面看(默认相机位置)。我看到的移动相机的方法是使用gluLookAt()函数设置要查看的点,并使用glTranslate3f()移动相机位置。我需要用不同的数据移动相机-我的数据不是我想看的点-而是,我有投影平面的数据-由观察向量和平面中的点确定。有没有办法使用这些数据而不是“注视”点来设置相机 我使用的是ortographic投影(glOrtho()),所以所有东西都投影到投影平面上 更新: 更准确地说:我拥有的点是平面上的一

Opengl GLSL-将着色器存储缓冲区的一部分用作计数器的正确性

这个问题是这个主题的延续: 此问题与粒子模拟主题有关。 比如说,我需要一个全球结构,包括: UINT的3D矩阵(32*32*32)(保存哈希链表的头id) 一个计数器,它告诉我哈希链表中的粒子数量 粒子的散列链表 第一个想法是第一个项目使用3D纹理,第二个项目使用原子计数器缓冲区,第三个项目使用SSB SSB中的每个条目都是一个粒子加上一个uint,该值指向同一体素中下一个粒子的位置 这里没有什么神奇的 现在,为了独立于空间(不局限于唯一的立方体空间),我必须能够将粒子从立方体传递到周围的其他

使用OpenGL 4.4在GPU上进行Bezier曲线(二次、三次)笔划三角剖分

如何在仅给定控制点的情况下,使用OpenGL 4.4功能(如计算、细分、几何体和顶点着色器)以给定笔划宽度生成bezier曲线笔划外壳(可能具有最小面积)的三角剖分。《OpenGL SuperBible》第6版第8章和《OpenGL 4.0着色语言烹饪书》第六章举例说明了如何在GPU上镶嵌立方体贝塞尔。@Wilbert你能添加一些方向点来实现这一点吗?也许你想重新表述你的问题?就目前情况而言,你只要求回答是/否。@AndonM.Coleman这不是我想要的。它们使用片段着色器渲染曲线。我对生成偏

Opengl lwjgl绘图元素数组

在大约3小时的时间里,我试图使用GLDrawerElement函数绘制简单的3d三角形,但似乎我做了一些不正确的事情,我就是这样做的: float[] verts = new float[9]; int[] tris = new int[3]; verts[0]=0;verts[1]=0;verts[2]=0; verts[3]=0;verts[4]=1;verts[5]=0; verts[6]=1;verts[7]=0;verts[8]=1; tris[0]=3; tris[1]=

Opengl 使用块索引作为UniformBufferObject、ShaderStorage BufferObject等的绑定点安全吗?

我对几个OpenGLs缓冲区对象相关函数中使用的*BlockBinding参数感到好奇 例如,glUniformBlockBinding,storageBlockBinding中的uniformBlockBinding参数​,以及glBindBufferRange和glBindBufferBase中相应的index参数 我知道,如果使用布局限定符在着色器中设置绑定点,则不需要调用glUniformBlockBinding和glShaderStorageBlockBinding layout (b

SDL_GL_退出后删除上下文? 使用SDL2关闭子系统后,删除OpenGL上下文是否安全

文件确实很模糊。问题代码是以下两种声明: SDL_GL_DeleteContext(glcontext); SDL_Quit(); 我认为如果窗口立即关闭,所有其他清理工作都在后台进行,那么响应性会更好。您在上一句中所说的内容可以通过SDL\u HideWindow实现 至于SDL\u Quit——因为它“清理所有初始化的子系统”,并且SDL\u Init文档说它“必须在使用任何其他SDL函数之前调用”,所以在SDL\u Quit之后不应该调用任何SDL函数。即使它能在某些系统上工作,也不能保

OpenGL更改背景而不更改以前绘制的图片的透视图

所以我画一个“I”并使用gluLookAt(0.f,0.f,3.f,0.f,0.f,0.f,1.f,0.f),I的大小适中。然后我添加了一个drawsecene()函数,它用渐变色绘制背景,然后“I”变得超级大。我猜这是因为我在drawScene()中将矩阵模式更改为GL_PROJECTION和GL_MODELVIEW,这些可能会更改透视图?我想需要glPushMatrix()和glPopMatrix()来保留矩阵状态,但我很难找到它们的位置。那么,我怎样才能让“我”看起来正常尺寸呢?这是我的d

OpenGL。如何反转X轴?

伙计们。我正在做网络游戏,所有单位的移动都将在服务器端处理。对于服务器调试,我必须将物理引擎集成到OpenGL中,或者将OpenGL集成到物理引擎中,实际上我只想使用OpenGL可视化服务器端的单元和其他对象。 但我面临一个问题。在游戏引擎里我有下一个轴方向 但在OpenGL世界中,我看到了这个方向 这段代码清楚地解释了这一点。我刚画了轴 gl.glBegin(gl.GL_QUADS); //z gl.glColor3f(0,0,1); gl.glVertex3f(-width,0,lengt

Opengl 平铺分形噪声

有人能帮我创建一个碎片着色器来产生平铺分形噪声吗。目前我正在使用随机噪声纹理,并以不同的分辨率对其进行采样,然后对结果求和。我必须添加什么才能使其平铺 uniform float time; uniform sampler2D u_texture; varying vec2 v_texCoords; float noisep(in vec2 p, in float scale) { return texture2D(u_texture, p / scale + vec2(0.0

Opengl 有人给我举一个使用glMultiDrawArraysIndirect和JOGL的例子吗?

我从OpenGL学习了glMultiDrawArraysIndirect()方法,我想在JOGL中使用这个方法调用。在示例代码中,使用C++结构,并且使用GLMAPFBRAMRANGER()将该结构中的数据存储在缓冲区中。我在想JOGL怎么样了?如果有任何例子,那就太好了 以下是使用OpenGL的示例代码: struct DrawArraysIndirectCommand { GLuint count; GLuint primCount; GLuint first;

OpenGL_定位三维到二维屏幕空间

我正在努力理解与转换3D图像相关的数学知识 指向二维屏幕位置。我知道这个过程包括从对象空间->世界空间->眼睛空间->剪辑空间->NDC空间->视口空间(屏幕上的最终2D位置)移动 顶点着色器: GL_Position = Projection Matrix * view Matrix * model Matrix * vec(Position,1); => clip space. 碎片着色器: (Pseudo code) //assuming GL_position is rec

OpenGL:强制驱动程序将VBO保留在视频内存中

我用GL_DYNAMIC_DRAW指定了一个大型VBO和相应的索引缓冲区。在每个帧中,我通过以下方式对顶点和索引的一小部分进行更改(每个帧中的顶点和索引不同,但与总缓冲区大小相比只有少数): -计算两个缓冲区的最小和最大变化指数 -使用glMapBufferRange映射这些最小-最大范围,并指定GL|u MAP_WRITE|u位| GL|u MAP_FLUSH|u EXPLICIT|u位| GL|u MAP_unsynchronized|u位 -将更改写入映射范围的几个子区域 -为每个更改的子

我可以跳过在OpenGL中实现细分着色器吗?

昨天,我买了一本关于OpenGL4.5的书,我现在正在做的项目不需要任何细分功能就可以通过。因此,我想在OpenGL管道的许多其他阶段中跳过实现细分着色器。可以跳过吗 提前谢谢 顶点着色器是唯一必需的着色器。几何体、细分控制、细分计算和片段着色器都是可选的。尽管在大多数情况下,您不希望片段着色器是可选的 如果确实使用细分,则TCS是可选的(您可以定义OpenGL的默认值),并且只有TES是绝对必要的。但并没有任何标志或任何东西来激活细分,若您和其他着色器一起编译TES,OpenGL将“认为”您正

Opengl 图像滤波-使用glsl着色器的直方图均衡化

我需要用glsl实现一些图像过滤算法。据我所知,片段着色器代码针对图像纹理中的每个纹理(像素)运行。因此,实现基于点(像素)的滤波算法很容易(例如亮度/对比度变化、sobel滤波器等)。但是,对于直方图均衡化或在遍历所有像素的图像中查找最大像素值之类的任务,则需要。但是,在着色器代码中,执行类似于下面的操作并非如此 for (int y=0; y<h; y++) for (int x=0; x<w; x++) for(int y=0;是您自己指出的,片段着色器在本地执行,如果

Opengl 将纹理的alpha替换到着色器中

我尝试在着色器中实现DOF效果。在着色器中,我使用颜色纹理+偏移进行模糊。我需要为RGB和我自己的A通道添加偏移量,这是我以前在着色器中创建的。如何一步替换alpha通道?我无法在GLSL函数中找到合适的函数。 谢谢大家! 是的,可以使用纹理(或者更确切地说是图像)作为输入和输出,但不应该这样做 OpenGL驱动程序需要知道什么是输入,什么是输出,以便能够正确地同步操作(例如,对纹理的读取应该等待对同一纹理的写入完成…) OpenGL 4.2引入了图像加载/存储,这是一种读取和写入图像的方式,但

Opengl 是否可以同时使用混合和深度测试?

我想这样做: 绘制对象1(因为我应该使用glDrawElement或glDrawArray,所以应该使用深度测试) 绘制对象2 混合1和2(obj 1+透明obj2) 用简单的伪代码解释 glEnable(GL_BNELD); /// draw obj1 /// glEnable(GL_DEPTH_TEST); glUniform4f(color1,1.0f); glDrawElements(...) // draw obj1 glDisable(GL_DEPTH_TEST); glBlen

当相机位于OpenGL图形下方时,它们看起来更暗

我在OpenGL中渲染四边形时遇到问题。如果相机低于某个点,则应用半透明时,它们看起来更暗。我怎样才能解决这个问题?这些对象是大量的四边形,Z差很小。我已实现此网页中半透明对象的渲染: 渲染代码: double alpha_factor = 0.75; double alpha_frac = (r_alpha - alpha_factor * r_alpha) / (1.0 - alpha_factor * r_alpha); double prev_alpha = r_alpha; glCl

如何在OpenGL中结合纹理和照明

我正在尝试在OpenGL中结合金字塔上的纹理和照明。我基本上是从合并两个独立的代码开始的,现在,我正在努力进行更改以平滑合并。然而,我有两个问题 我需要删除对象颜色并用纹理替换它,但我不确定如何用这段代码解决这个问题,因为对象颜色在代码中根深蒂固 我不知道如何列出位置、法线和纹理的坐标。他们目前的安排似乎给产出带来了很多问题 对于第一个问题,我尝试用纹理替换pyramidColor和objectColor,但它似乎产生了更多问题 对于第二个问题,我尝试将列表顺序重新排列为位置、纹理和法线,这对一

Opengl 你能计算每个实例,而不是每个顶点吗?

我使用实例在opengl中渲染了数百万个四边形,效果很好。基本四边形有6个顶点,每个实例的位置都有一个vec3。但是,对于每个实例,我需要根据实例的位置计算一些向量。如果我在顶点着色器中这样做,我将为每个实例计算这些向量6次。有没有办法在每个实例中只计算一次 在任何人提到几何体着色器之前,我以前使用过几何体着色器,但我切换到实例化,因为它很慢。也许有一种方法可以两者兼用?它有益吗 如果我在顶点着色器中这样做,我将为每个实例计算这些向量6次。有没有办法在每个实例中只计算一次 不是在同一个抽签通知中

我如何模拟;辉光道奇“;使用OpenGL着色器进行混合?

我想使用opengl及其着色器在clip studio上模拟“辉光减淡”效果。 所以我发现下面的公式就是“辉光道奇”的工作原理 然后我想出了两种方法来真正做到这一点,但这两种方法似乎都不起作用 第一个是在着色器中计算1/(1-source.rgb),并使用glBlendfunc(GL\u ZERO,GL\u SRC\u COLOR)或glBlendfunc(GL\u DST\u COLOR,GL\u ZERO)进行乘法混合 但正如赫罗诺斯·佩奇所说,所有的尺度因子都在0到1之间。这意味着我不能把

Opengl 纹理映射金字塔

我正在尝试对我画的金字塔进行纹理处理。我正在尝试映射一个砖块纹理,该纹理在所有面上都具有相同的方向,但是到目前为止,我尝试的所有纹理坐标都在金字塔的某些面上留下了正确的方向,在其他面上留下了翻转的方向。所附的图片显示了我所指的,我正试图使金字塔的所有面都具有如图片所示的“正确”方向 我假设这是我的纹理坐标的问题 以下是我正在使用的顶点和纹理坐标: GLfloat verts[] = { // Vertex Positions // texture coords

  1    2   3   4   5   6  ... 下一页 最后一页 共 299 页