- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
当我使用 xcode 8 在 ios 10 中运行我的应用程序时,我在调试控制台中收到以下消息,并且通过 UI 卡住,任何人都可以知道为什么会发生这种情况
ERROR
/BuildRoot/Library/Caches/com.apple.xbs/Sources/VectorKit/VectorKit-1228.30.7.17.9/GeoGL/GeoGL/GLCoreContext.cpp
1763: InfoLog SolidRibbonShader: ERROR
/BuildRoot/Library/Caches/com.apple.xbs/Sources/VectorKit/VectorKit-1228.30.7.17.9/GeoGL/GeoGL/GLCoreContext.cpp
1764: WARNING: Output of vertex shader 'v_gradient' not read by
fragment shader
最佳答案
回答
您可能会在 Xcode 中收到此警告的情况之一是使用使用着色器的应用程序,例如带有 MKMapView
的 Maps 应用程序。您会发现 map View 在具有真实硬件/ native 操作系统的真实设备上没有警告的情况下按预期工作。
在 sim 中,SolidRibbonShader
片段着色器 无法读取 v_gradient
顶点着色器 的输出可能是因为它处于测试阶段,或者 Xcode 版本和 SIM 版本之间可能不兼容。然而,着色器在真实设备上被识别。
解释
这些着色器属于 OpenGL 渲染管道。渲染管线是 OpenGL 在渲染对象时采取的一系列步骤。
渲染管道负责应用纹理、将顶点转换为正确的坐标系以及在屏幕上显示角色等。
此管道中有六个阶段。
最后,一张图片出现在您的设备屏幕上。这六个阶段称为 OpenGL 渲染管道,所有用于渲染的数据都必须经过它。
什么是着色器?
着色器是您在 GPU 中开发的一个小程序。着色器是用一种称为 OpenGL 着色语言 (GLSL) 的特殊图形语言编写的。
着色器取代了 OpenGL 渲染管道中的两个重要阶段:逐顶点处理 和逐片段处理 阶段。这两个阶段各有一个着色器。
顶点着色器
的最终目标是提供网格顶点到渲染管线的最终转换。 片段着色器
的目标是为帧缓冲区的每个像素提供着色和纹理数据。
顶点着色器
将三角形的顶点从局部模型坐标系转换到屏幕位置。 片段着色器
计算屏幕上栅格化的三角形内像素的颜色。
单独的着色器对象加速编译和链接
许多 OpenGL ES 应用程序使用多个顶点和片段着色器,将相同的片段着色器与不同的重用通常很有用>顶点着色器,反之亦然。因为核心 OpenGL ES 规范要求在单个着色器程序中将 vertex 和 fragment 着色器链接在一起,混合和匹配着色器会导致大量程序,增加初始化应用时的总着色器编译和链接时间。
关于ios - 警告 : Output of vertex shader 'v_gradient' not read by fragment shader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39608231/
当我在 ios 10 设备和 xcode 8 上运行我的应用程序时,我在调试控制台中收到以下消息。谁能知道为什么会这样 ERROR /BuildRoot/Library/Caches/com.appl
当我使用 xcode 8 在 ios 10 中运行我的应用程序时,我在调试控制台中收到以下消息,并且通过 UI 卡住,任何人都可以知道为什么会发生这种情况 ERROR /BuildRoot/Lib
我是一名优秀的程序员,十分优秀!