着色器编译失败
⑴ WebGL的顶点着色器编译失败,问题,怎么解决
WebGL里有顶点着色器和片段着色器两种着色器。无论哪一种都可以使用GLSL来编写。顶点着色器和片段着色器是相互依赖的,缺一不可,并且首先被调用的是顶点着色器。
⑵ 我的电脑一上CF就出来个 着色器无法编译 该怎么办 跪求高手指教
首先用驱动人生这个软件更新您的显卡驱动,重新启动后,下载CF客户端,重新进行安装,问题就可以解决
⑶ 合金弹头7问题
DeSmuME 0.9.5 svn2809 x86
- 编译于: Sep 3 2009 08:53:26
DirectX 输入:
- 已成功初始化游戏手柄: USB Joystick
addonsChangePak
已成功初始化麦克风。
初始化 wpcap.dll 失败 - SoftAP 支持已被关闭
WIFI: Ad-hoc: initialization successful.
OpenGL 模式: 硬件
冲突 : 链接着色器程序失败 : Fragment shader(s) failed to link, vertex shader(s)
linked.
您的系统不支持着色器, 正在使用固定管线
(链接着色器程序失败。)
模拟器暂停
已解密。
初始化 wpcap.dll 失败 - SoftAP 支持已被关闭
ROM crc: 89F4BBA2
ROM serial: METALSLUG7___YM7JH4
成功载入 2466 - Metal Slug 7.nds
模拟器未暂停
WIFI: TX slot 2 trying to send a packet: TXCnt = 0008, TXBufLoc = 0000
⑷ glsl语言和c语言的区别·也就是不同的地方有哪些,明确点。谢谢喽
变量
GLSL的变量命名方式与C语言类似。变量的名称可以使用字母,数字以及下划线,但变量名不能以数字开头,还有变量名不能以gl_作为前缀,这个是GLSL保留的前缀,用于GLSL的内部变量。当然还有一些GLSL保留的名称是不能够作为变量的名称的。
基本类型
除了布尔型,整型,浮点型基本类型外,GLSL还引入了一些在着色器中经常用到的类型作为基本类型。这些基本类型都可以作为结构体内部的类型。如下表:
类型 描述
void 跟C语言的void类似,表示空类型。作为函数的返回类型,表示这个函数不返回值。
bool 布尔类型,可以是true 和false,以及可以产生布尔型的表达式。
int 整型 代表至少包含16位的有符号的整数。可以是十进制的,十六进制的,八进制的。
float 浮点型
bvec2 包含2个布尔成分的向量
bvec3 包含3个布尔成分的向量
bvec4 包含4个布尔成分的向量
ivec2 包含2个整型成分的向量
ivec3 包含3个整型成分的向量
ivec4 包含4个整型成分的向量
mat2 或者 mat2x2 2×2的浮点数矩阵类型
mat3或者mat3x3 3×3的浮点数矩阵类型
mat4x4 4×4的浮点矩阵
mat2x3 2列3行的浮点矩阵(OpenGL的矩阵是列主顺序的)
mat2x4 2列4行的浮点矩阵
mat3x2 3列2行的浮点矩阵
mat3x4 3列4行的浮点矩阵
mat4x2 4列2行的浮点矩阵
mat4x3 4列3行的浮点矩阵
sampler1D 用于内建的纹理函数中引用指定的1D纹理的句柄。只可以作为一致变量或者函数参数使用
sampler2D 二维纹理句柄
sampler3D 三维纹理句柄
samplerCube cube map纹理句柄
sampler1DShadow 一维深度纹理句柄
sampler2DShadow 二维深度纹理句柄
结构体
结构体
结构体可以组合基本类型和数组来形成用户自定义的类型。在定义一个结构体的同时,你可以定义一个结构体实例。或者后面再定义。
struct surface {float indexOfRefraction;
vec3 color;float turbulence;
} mySurface;
surface secondeSurface;
你可以通过=为结构体赋值,或者使用 ==,!=来判断两个结构体是否相等。
mySurface = secondSurface;
mySurface == secondSurface;
只有结构体中的每个成分都相等,那么这两个结构体才是相等的。访问结构体的内部成员使用. 来访问。
vec3 color = mySurface.color + secondSurface.color;
结构体至少包含一个成员。固定大小的数组也可以被包含在结构体中。GLSL的结构体不支持嵌套定义。只有预先声明的结构体可以嵌套其中。
struct myStruct {
vec3 points[3]; //固定大小的数组是合法的
surface surf; //可以,之前已经定义了
struct velocity { //不合法float speed;
vec3 direction;
} velo;
subSurface sub; //不合法,没有预先声明;};struct subSurface { int id;
};
数组
GLSL中只可以使用一维的数组。数组的类型可以是一切基本类型或者结构体。下面的几种数组声明是合法的:
surface mySurfaces[];
vec4 lightPositions[8];
vec4 lightPos[] = light www.hnne.com Positions;const int numSurfaces = 5;
surface myFiveSurfaces[numSurfaces];float[5] values;
指定显示大小的数组可以作为函数的参数或者使返回值,也可以作为结构体的成员.数组类型内建了一个length()函数,可以返回数组的长度。
lightPositions.length() //返回数组的大小 8
最后,你不能定义数组的数组。
修饰符
变量的声明可以使用如下的修饰符。
修饰符 描述
const 常量值必须在声明是初始化。它是只读的不可修改的。
attribute 表示只读的顶点数据,只用在顶点着色器中。数据来自当前的顶点状态或者顶点数组。它必须是全局范围声明的,不能再函数内部。一个attribute可以是浮点数类型的标量,向量,或者矩阵。不可以是数组或则结构体
uniform 一致变量。在着色器执行期间一致变量的值是不变的。与const常量不同的是,这个值在编译时期是未知的是由着色器外部初始化的。一致变量在顶点着色器和片段着色器之间是共享的。它也只能在全局范围进行声明。
varying 顶点着色器的输出。例如颜色或者纹理坐标,(插值后的数据)作为片段着色器的只读输入数据。必须是全局范围声明的全局变量。可以是浮点数类型的标量,向量,矩阵。不能是数组或者结构体。
centorid varying 在没有多重采样的情况下,与varying是一样的意思。在多重采样时,centorid varying在光栅化的图形内部进行求值而不是在片段中心的固定位置求值。
invariant (不变量)用于表示顶点着色器的输出和任何匹配片段着色器的输入,在不同的着色器中计算产生的值必须是一致的。所有的数据流和控制流,写入一个invariant变量的是一致的。编译器为了保证结果是完全一致的,需要放弃那些可能会导致不一致值的潜在的优化。除非必要,不要使用这个修饰符。在多通道渲染中避免z-fighting可能会使用到。
in 用在函数的参数中,表示这个参数是输入的,在函数中改变这个值,并不会影响对调用的函数产生副作用。(相当于C语言的传值),这个是函数参数默认的修饰符
out 用在函数的参数中,表示该参数是输出参数,值是会改变的。
inout 用在函数的参数,表示这个参数即是输入参数也是输出参数。
内置变量
内置变量可以与固定函数功能进行交互。在使用前不需要声明。顶点着色器可用的内置变量如下表:
名称 类型 描述
gl_Color vec4 输入属性-表示顶点的主颜色
gl_SecondaryColor vec4 输入属性-表示顶点的辅助颜色
gl_Normal vec3 输入属性-表示顶点的法线值
gl_Vertex vec4 输入属性-表示物体空间的顶点位置
gl_MultiTexCoordn vec4 输入属性-表示顶点的第n个纹理的坐标
gl_FogCoord float 输入属性-表示顶点的雾坐标
gl_Position vec4 输出属性-变换后的顶点的位置,用于后面的固定的裁剪等操作。所有的顶点着色器都必须写这个值。
gl_ClipVertex vec4 输出坐标,用于用户裁剪平面的裁剪
gl_PointSize float 点的大小
gl_FrontColor vec4 正面的主颜色的varying输出
gl_BackColor vec4 背面主颜色的varying输出
gl_FrontSecondaryColor vec4 正面的辅助颜色的varying输出
gl_BackSecondaryColor vec4 背面的辅助颜色的varying输出
gl_TexCoord[] vec4 纹理坐标的数组varying输出
gl_FogFragCoord float 雾坐标的varying输出
片段着色器的内置变量如下表:
名称 类型 描述
gl_Color vec4 包含主颜色的插值只读输入
gl_SecondaryColor vec4 包含辅助颜色的插值只读输入
gl_TexCoord[] vec4 包含纹理坐标数组的插值只读输入
gl_FogFragCoord float 包含雾坐标的插值只读输入
gl_FragCoord vec4 只读输入,窗口的x,y,z和1/w
gl_FrontFacing bool 只读输入,如果是窗口正面图元的一部分,则这个值为true
gl_PointCoord vec2 点精灵的二维空间坐标范围在(0.0, 0.0)到(1.0, 1.0)之间,仅用于点图元和点精灵开启的情况下。
gl_FragData[] vec4 使用glDrawBuffers输出的数据数组。不能与gl_FragColor结合使用。
gl_FragColor vec4 输出的颜色用于随后的像素操作
gl_FragDepth float 输出的深度用于随后的像素操作,如果这个值没有被写,则使用固定功能管线的深度值代替
表达式
操作符
GLSL语言的操作符与C语言相似。如下表(操作符的优先级从高到低排列)
操作符 描述
() 用于表达式组合,函数调用,构造
[] 数组下标,向量或矩阵的选择器
. 结构体和向量的成员选择
++ – 前缀或后缀的自增自减操作符
+ – ! 一元操作符,表示正 负 逻辑非
* / 乘 除操作符
+ - 二元操作符 表示加 减操作
<> <= >= == != 小于,大于,小于等于, 大于等于,等于,不等于 判断符
&& || ^^ 逻辑与 ,或, 异或
?: 条件判断符
= += –= *= /= 赋值操作符
, 表示序列
像 求地址的& 和 解引用的 * 操作符不再GLSL中出现,因为GLSL不能直接操作地址。类型转换操作也是不允许的。 位操作符(&,|,^,~, <<, >> ,&=, |=, ^=, <<=, >>=)是GLSL保留的操作符,将来可能会被使用。还有求模操作(%,%=)也是保留的。
数组访问
数组的下标从0开始。合理的范围是[0, size - 1]。跟C语言一样。如果数组访问越界了,那行为是未定义的。如果着色器的编译器在编译时知道数组访问越界了,就会提示编译失败。
vec4 myColor, ambient, diffuse[6], specular[6];
myColor = ambient + diffuse[4] + specular[4];
构造函数
构造函数可以用于初始化包含多个成员的变量,包括数组和结构体。构造函数也可以用在表达式中。调用方式如下:
vec3 myNormal = vec3(1.0, 1.0, 1.0);
greenTint = myColor + vec3(0.0, 1.0, 0.0);
ivec4 myColor = ivec4(255);
还可以使用混合标量和向量的方式来构造,只要你的元素足以填满该向量。
vec4 color = vec4(1.0, vec2(0.0, 1.0), 1.0);
vec3 v = vec3(1.0, 10.0, 1.0);
vec3 v1 = vec3(v);
⑸ apex编译着色器怎么解决
在程序设置先选中《Apex英雄》,然后找到着色缓存器,先关闭然后点击应用,然后再重新打开再次应用。等加载着色器成功,之后在进入《Apex英雄》就不需要每次加载着色器了。
首先在节目设置中选中 Apex的英雄,然后找到颜色缓存器,关闭然后点击应用,然后再重新打开应用程序。等待着色器被载入成功,之后每次进入 Apex英雄都不再需要每次载入颜色。
韩国Nexon子公司Symmetricspace开发的新款休闲射击网游《APEX》。《APEX》是一款休闲动作TPS,玩家可以体验简单、畅快的战斗。
游戏介绍:
韩国Nexon子公司Symmetricspace开发的新款休闲射击网游《APEX》。《APEX》是一款休闲动作TPS,玩家可以体验简单、畅快的战斗。游戏标榜“正面突击”即固定正面视角,使初学者也可简单上手。此外,作为休闲游戏,玩家可以利用众多补助道具展开快速的攻防战斗。
《APEX》的游戏模式有玩家间对战模式(PVP)、玩家们共同协力镇压敌军的模式(PVE),此外游戏中还添加了多样的迷你游戏。
⑹ 穿越火线cannot compile shader怎么搞
cannot compile shader译成中文是:不能编译着色器。
从显卡驱动入手,有时候显卡驱动过旧时也会出现显示的异常,将显卡驱动升级更新到最新,也可以参照官网按其要求升级显卡驱动,然后进入游戏测试是否正常显示。
画面调到最低特效然后测试,最低效果OK再逐步往上调试,直到适合本机的最佳显示效果。
也可以重新安装游戏、重新安装系统,这是以上方案都不能解决的备用方案。
⑺ 启动AE CC时,提示:光线追踪3D,初始着色器编译失败,如图中:
去装这个就不会失败了!!
Adobe After Effects CC V12官方简体中文版[含破解补丁]
http://www.ibcde.com/thread-6515-1-1.html
(出处: 致学网)
⑻ 《使命召唤》cod17着色器为什么一直百分之0
游戏丢失了一些重要文件。
1、修复游戏:一般出现着色器卡住不动的原因很可能是游戏丢失了一些重要文件,进行游戏修复一般即可解决。
2、着色器问题:玩家们可以在游戏中的画面设置中进行着色器的重新安装操作,点击后游戏会自动删除着色器重新安装。
3、卸载并重新安装游戏:游戏可能丢失了比较重要的文件,并且游戏自身也无法修复,这种情况下只能卸载游戏重装来解决,以上两种方法都无法解决着色器安装问题时,在选择第三种。
相关信息
武器分为主武器和副武器两种,功能和外观均采用现代设计,可为玩家提供全新的功能特性。武器可分为弹丸型、近战型、能量型和原型武器种类,玩家可使用不同的配件根据自己的玩法进行调整。游戏中有上百种武器可解锁。
玩家将通过完成多人比赛获得制作经费,制作源性武器还将附带枪械技能,可以改变原型武器的功能,使其符合玩家打法。
⑼ One or more shaders failed to compile,This likely means that you either need new graphics card driv
一个或多个着色未能编写,这可能意味着你要么需要新的图形卡驱动或你的图形卡不支持材质模型3
换显卡