- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在链接程序与附加的顶点和片段着色器并为其提供值后,我注意到什么都没有发生,即没有渲染任何东西。经过一些日志记录后,我发现该程序找不到我的任何制服。经过更多的日志记录,我发现我的程序中没有事件的制服或属性。我也仔细检查了着色器源,并且所有变量都用于 fo'sho(因此消除了任何“优化”)。我还检查了源解析,它也很好。因此,我不知道是什么原因造成的。
这是我的解析/编译函数:
int _LoadProgramFromSource(GLuint shader,const char* filename)
{
std::ifstream File;
File.open(filename, std::ios::in);
//check if file is valid
if (!File)
{
g_Log.PrintError("Creating shader %s - file not found",filename);
return -1;
}
const GLint len = _getFileLenght(File);
if(len == 0) return 0;
std::vector<std::string> lines;
lines.push_back("#version 140"); // GLSL version control
while(!File.eof()) {
std::string in = "";
std::getline(File, in);
if(strcmp(in.substr(0,8).c_str(),"#version")) lines.push_back(in.c_str());
}
std::string fm = "";
for(int i = 0; i < lines.size(); ++i) {
std::cout << lines[i] << std::endl;
fm += lines[i];
if(fm[fm.size()-1]) fm += "\0";
}
const GLchar* fileMemory = fm.c_str();
glShaderSource(shader, 1, &fileMemory, NULL); CHECK_GL_ERROR;
glCompileShader(shader); CHECK_GL_ERROR;
int status;
glGetShaderiv(shader, GL_COMPILE_STATUS, &status); CHECK_GL_ERROR;
if(status == GL_TRUE) {
g_Log.PrintInfo("Shader %s compiled successfully.", filename);
printLog(shader);
return 0;
}
else {
g_Log.PrintError("Shader %s could not compile.", filename);
printLog(shader);
return -1;
}
}
这是链接:
int SetTechnique(unsigned int hTechnique)
{
GLint asdf; // temp
m_activeTechnique = hTechnique;
glLinkProgram(m_techniques[m_activeTechnique].m_program); CHECK_GL_ERROR;
glGetProgramiv(m_techniques[m_activeTechnique].m_program,GL_LINK_STATUS,&asdf);
if(asdf == GL_TRUE) {
g_Log.PrintInfo("Program %d successfully linked. (%s | %s)",m_techniques[m_activeTechnique].m_program,m_techniques[m_activeTechnique].BufferVShader,m_techniques[m_activeTechnique].BufferPShader);
glGetProgramiv(m_techniques[m_activeTechnique].m_program,GL_ACTIVE_UNIFORMS,&asdf); CHECK_GL_ERROR;
g_Log.PrintInfo("Active uniforms: %d",asdf);
glGetProgramiv(m_techniques[m_activeTechnique].m_program,GL_ACTIVE_ATTRIBUTES,&asdf); CHECK_GL_ERROR;
g_Log.PrintInfo("Active attributes: %d",asdf);
} else {
g_Log.PrintError("Program not linked.");
GLint tmp0;
glGetProgramiv(m_techniques[m_activeTechnique].m_program, GL_INFO_LOG_LENGTH, &tmp0);
if(tmp0) {
GLchar* tmp1 = new GLchar[tmp0];
GLsizei tmp2;
glGetProgramInfoLog(m_techniques[m_activeTechnique].m_program, tmp0, &tmp2, tmp1);
g_Log.PrintError("%s",tmp1);
g_Log.PrintError("%s",m_techniques[m_activeTechnique].BufferVShader);
g_Log.PrintError("%s",m_techniques[m_activeTechnique].BufferPShader);
delete[] tmp1;
}
}
if(m_techniques[m_activeTechnique].m_cull_off)
glDisable(GL_CULL_FACE);
else
glEnable(GL_CULL_FACE);
if(m_techniques[m_activeTechnique].m_ccwcull)
glCullFace(GL_FRONT);
else
glCullFace(GL_BACK);
return 0;
}
这是对日志的一点摘录:
Program 120 successfully linked. (media/shaders/ship/LowReflect_VertexShader.vert | media/shaders/ship/LowReflect_PixelShader.frag)
Active uniforms: 0
Active attributes: 0
GLSL: warning! LightDiffuse No such uniform.
GLSL: warning! LightSpecular No such uniform.
GLSL: warning! LightAmbient No such uniform.
GLSL: warning! FogColor No such uniform.
GLSL: warning! FogDensity No such uniform.
GLSL: warning! WorldViewProjMatrix No such uniform.
GLSL: warning! WorldMatrix No such uniform.
...等等。
glxinfo | grep OpenGL
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce 9600 GT/PCIe/SSE2
OpenGL core profile version string: 3.3.0 NVIDIA 325.15
OpenGL core profile shading language version string: 3.30 NVIDIA via Cg compiler
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
顶点着色器:
// glslv output by Cg compiler
// cgc version 3.0.0016, build date Feb 10 2011
// command line args: -profile glslv -po version=140
// source file: LowReflect_VertexShader.cg
//vendor NVIDIA Corporation
//version 3.0.0.16
//profile glslv
//program main
//semantic MatSpecular
//semantic MatDiffuse
//semantic MatSpecularPower
//semantic LightDirection
//semantic CameraPosition
//semantic WorldViewProjMatrix
//semantic WorldMatrix
//var float4 MatSpecular : : MatSpecular : -1 : 1
//var float4 MatDiffuse : : MatDiffuse : -1 : 1
//var float MatSpecularPower : : MatSpecularPower : -1 : 1
//var float4 LightDirection : : LightDirection : -1 : 1
//var float4 CameraPosition : : CameraPosition : -1 : 1
//var float4x4 WorldViewProjMatrix : : WorldViewProjMatrix[0], 4 : -1 : 1
//var float4x4 WorldMatrix : : WorldMatrix[0], 4 : -1 : 1
//var float4 IN.position : $vin.POSITION : $POSITION : 0 : 1
//var float3 IN.normal : $vin.NORMAL : $NORMAL : 0 : 1
//var float3 IN.tangent : $vin.TEXCOORD4 : : 0 : 0
//var float3 IN.binormal : $vin.TEXCOORD8 : : 0 : 0
//var float2 IN.coord : $vin.TEXCOORD0 : $TEXCOORD0 : 0 : 1
//var float2 IN.coord2 : $vin.TEXCOORD1 : $TEXCOORD1 : 0 : 1
//var float4 main.sposition : $vout.POSITION : POSITION : -1 : 1
//var float4 main.diffuse : $vout.TEXCOORD0 : $TEX0 : -1 : 1
//var float4 main.specular : $vout.TEXCOORD1 : $TEX1 : -1 : 1
//var float2 main.coord : $vout.TEXCOORD2 : $TEX2 : -1 : 1
//var float2 main.coord2 : $vout.TEXCOORD3 : $TEX3 : -1 : 1
//var float main.depth : $vout.TEXCOORD4 : $TEX4 : -1 : 1
//var float main.oClip0 : $vout.TEXCOORD5 : $TEX5 : -1 : 1
#version 140
struct Vertex {
vec4 position;
vec3 normal1;
vec3 tangent;
vec3 binormal;
vec2 coord1;
vec2 coord21;
};
struct Low_Fragment {
vec4 sposition;
vec4 diffuse;
vec4 specular;
vec2 coord;
vec2 coord2;
float depth;
float oClip0;
};
Low_Fragment ret_0;
float TMP3;
float TMP2;
float TMP1;
float TMP0;
vec4 r0013;
vec4 r0023;
float TMP50;
vec3 a0057;
float TMP58;
float y0065;
in vec4 POSITION;
in vec4 NORMAL;
in vec4 TEXCOORD0;
in vec4 TEXCOORD1;
out vec4 TEX0;
out vec4 TEX1;
out vec4 TEX2;
out vec4 TEX3;
out vec4 TEX4;
out vec4 TEX5;
uniform vec4 MatSpecular;
uniform vec4 MatDiffuse;
uniform float MatSpecularPower;
uniform vec4 LightDirection;
uniform vec4 CameraPosition;
uniform mat4 WorldViewProjMatrix;
uniform mat4 WorldMatrix;
// main procedure, the original name was main
void main()
{
Low_Fragment OUT;
vec3 view;
vec3 normal;
vec3 Reflect;
float Diff;
float Spec;
r0013.x = dot(WorldViewProjMatrix[0], POSITION);
r0013.y = dot(WorldViewProjMatrix[1], POSITION);
r0013.z = dot(WorldViewProjMatrix[2], POSITION);
r0013.w = dot(WorldViewProjMatrix[3], POSITION);
r0023.y = dot(WorldMatrix[1], POSITION);
view = (CameraPosition - POSITION).xyz;
TMP0 = dot(view, view);
TMP1 = inversesqrt(TMP0);
view = TMP1*view;
TMP0 = dot(NORMAL.xyz, NORMAL.xyz);
TMP1 = inversesqrt(TMP0);
normal = TMP1*NORMAL.xyz;
TMP2 = dot(normal, view);
Reflect = view - (2.00000000E+00*normal)*TMP2;
Diff = dot(LightDirection.xyz, normal);
TMP3 = min(1.00000000E+00, Diff);
TMP50 = max(0.00000000E+00, TMP3);
OUT.diffuse = TMP50*MatDiffuse;
a0057 = (-LightDirection).xyz;
Spec = dot(a0057, Reflect);
TMP3 = min(1.00000000E+00, Spec);
TMP58 = max(0.00000000E+00, TMP3);
y0065 = float(int(MatSpecularPower));
Spec = pow(TMP58, y0065);
OUT.specular = Spec*MatSpecular;
ret_0.sposition = r0013;
ret_0.diffuse = OUT.diffuse;
ret_0.specular = OUT.specular;
ret_0.coord = TEXCOORD0.xy;
ret_0.coord2 = TEXCOORD1.xy;
ret_0.depth = r0013.z;
ret_0.oClip0 = r0023.y;
gl_Position = r0013;
TEX0 = OUT.diffuse;
TEX1 = OUT.specular;
TEX2.xy = TEXCOORD0.xy;
TEX3.xy = TEXCOORD1.xy;
TEX4.x = r0013.z;
TEX5.x = r0023.y;
return;
}
片段着色器:
// glslf output by Cg compiler
// cgc version 3.0.0016, build date Feb 10 2011
// command line args: -profile glslf -po version=140
// source file: LowReflect_PixelShader.cg
//vendor NVIDIA Corporation
//version 3.0.0.16
//profile glslf
//program main
//semantic MatAmbient
//semantic LightDiffuse
//semantic LightSpecular
//semantic LightAmbient
//semantic FogColor
//semantic FogDensity
//semantic SampDiffuse : TEXUNIT0
//semantic SampSpecular : TEXUNIT1
//semantic SampLight : TEXUNIT3
//var float4 MatAmbient : : MatAmbient : -1 : 1
//var float4 LightDiffuse : : LightDiffuse : -1 : 1
//var float4 LightSpecular : : LightSpecular : -1 : 1
//var float4 LightAmbient : : LightAmbient : -1 : 1
//var float4 FogColor : : FogColor : -1 : 1
//var float FogDensity : : FogDensity : -1 : 1
//var sampler2D SampDiffuse : TEXUNIT0 : SampDiffuse 0 : -1 : 1
//var sampler2D SampSpecular : TEXUNIT1 : SampSpecular 1 : -1 : 1
//var sampler2D SampLight : TEXUNIT3 : SampLight 3 : -1 : 1
//var float4 IN.diffuse : $vin.TEXCOORD0 : $TEX0 : 0 : 1
//var float4 IN.specular : $vin.TEXCOORD1 : $TEX1 : 0 : 1
//var float2 IN.coord : $vin.TEXCOORD2 : $TEX2 : 0 : 1
//var float2 IN.coord2 : $vin.TEXCOORD3 : $TEX3 : 0 : 1
//var float IN.depth : $vin.TEXCOORD4 : $TEX4 : 0 : 1
//var float IN.oClip0 : $vin.TEXCOORD5 : $TEX5 : 0 : 1
//var float4 main.color : $vout.COLOR : $COL0 : -1 : 1
#version 140
struct Low_Fragment {
vec4 diffuse;
vec4 specular;
vec2 coord;
vec2 coord2;
float depth;
float oClip0;
};
struct Low_Pixel {
vec4 color;
};
Low_Pixel ret_0;
float TMP1;
vec4 TMP0;
float c0016;
float TMP21;
float t0026;
in vec4 TEX0;
in vec4 TEX1;
in vec4 TEX2;
in vec4 TEX3;
in vec4 TEX4;
in vec4 TEX5;
out vec4 COL0;
uniform vec4 MatAmbient;
uniform vec4 LightDiffuse;
uniform vec4 LightSpecular;
uniform vec4 LightAmbient;
uniform vec4 FogColor;
uniform float FogDensity;
uniform sampler2D SampDiffuse;
uniform sampler2D SampSpecular;
uniform sampler2D SampLight;
// main procedure, the original name was main
void main()
{
Low_Pixel OUT;
vec4 DiffuseTex;
vec4 SpecularTex;
vec4 Diffuse;
vec4 Specular;
vec4 Ambient;
float FogFactor;
if (TEX5.x < 0.00000000E+00) { // if begin
discard;
} // end if
DiffuseTex = texture(SampDiffuse, TEX2.xy);
c0016 = DiffuseTex.w - 8.00000012E-01;
if (c0016 < 0.00000000E+00) { // if begin
discard;
} // end if
SpecularTex = texture(SampSpecular, TEX2.xy);
TMP0 = texture(SampLight, TEX3.xy);
DiffuseTex.xyz = DiffuseTex.xyz*TMP0.xxx;
SpecularTex.xyz = SpecularTex.xyz*TMP0.xxx;
Diffuse = TEX0*DiffuseTex*LightDiffuse;
Specular = TEX1*SpecularTex*LightSpecular;
Ambient = MatAmbient*DiffuseTex*LightAmbient;
OUT.color = Diffuse + Specular + Ambient;
OUT.color.w = DiffuseTex.w;
TMP1 = TEX4.x*FogDensity*TEX4.x*FogDensity;
TMP21 = pow(2.71828198E+00, TMP1);
FogFactor = 1.00000000E+00/TMP21;
t0026 = 1.00000000E+00 - FogFactor;
OUT.color.xyz = OUT.color.xyz + t0026*(FogColor.xyz - OUT.color.xyz);
ret_0.color = OUT.color;
COL0 = OUT.color;
return;
} // main end
如果您需要,我会即时提供更多信息。提前致谢。
最佳答案
我不会详细解释为什么您的加载代码很糟糕,我只会提供正确的代码来完成您的代码正在尝试和失败的事情。
std::string shader;
{
std::ifstream File(filename, std::ios::in);
if(File)
shader.assign(std::istreambuf_iterator<char>(File), std::istreambuf_iterator<char>());
}
这不会为您的着色器添加前缀 #version
,但这已经在您的着色器文件中了。 istreambuf_iterator
类在 <iterator>
标题。
关于c++ - GLSL:链接后没有事件制服/属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18488835/
我有一个网站,并且我使用 javascript sdk 添加了“点赞”按钮。 这是代码 (function(d, s, id) { var js, fjs = d.g
我知道 HTML 是逐行读取的。当您链接多个 css 文件(如规范化文件和样式表文件)时,由于 CSS 重要性特异性和源顺序,样式表文件应链接在规范化文件之后。看起来这不会影响链接的 JavaScri
我正在使用官方 Bootstrap site 提供的 CDN 链接在我的网络应用程序中使用面板进行测试 在彻底检查我的代码后,面板没有显示。 但是我在 SO 上看到了类似的帖子并且 CDN 链接不同
这里是编码初学者。我正在尝试为我的移动设备网站设置断点,以便我的网站适合小屏幕。我只是想检查如果我缩小视口(viewport)的宽度,背景颜色是否会改变,但没有发生任何变化。也许我只是对一个简单的错误
举一个我想要的例子,想象一下这个字符串: $text = 'lorem ipsum About us lorem ipsum'; 如果此字符串包含一个 href 以 / 开头的 anchor 链接,则
如何链接到 LaTeX 文档的另一部分或子部分?这种链接的常规范式是什么,像[链接名称]那样写,或者像网页超链接那样写? 最佳答案 链接到另一个部分需要您的部分进行一些额外的标记。要使用的命令是: \
我有一个订单表,其中包含订单号、客户 ID 和代理 ID。然后有一个带有 id 的客户表和一个带有 id 的代理表。 我需要获取所有具有来自代理 ID 'a03' 和代理 ID 'a05' 的订单的客
假设我有: dic = {"z":"zv", "a":"av"} ## Why doesn't the following return a sorted list of keys? keys = d
我在尝试链接到外部库时得到了一些奇怪的结果。如果我从命令行运行以下命令: gcc fftwTest.c -I../extlib/fftw-3.3.5-dll32 -L../extlib/fftw-3.
我认为我没有正确理解 jQuery 链接。我正在遍历一个数组并尝试将 div 元素添加到我的包装器 CSS 类中,每个 div 元素都有一个“click”类和自定义 css top 和 left 属性
HTML 使用超级链接与网络上的另一个文档相连。几乎可以在所有的网页中找到链接。点击链接可以从一张页面跳转到另一张页面。 HTML 超链接(链接) HTML使用标签 a 来设置超文本链接。 超链
这个问题在这里已经有了答案: How do I link to part of a page? (hash?) (7 个答案) Scroll Automatically to the Bottom
我想创建一个 Docker Swarm 集群,运行一个 Elasticsearch 实例、一个 MongoDB 实例和一个 grails 应用程序,每个都在单独的机器上。我正在使用 Docker Ma
我正在尝试将 CakePHP HTML Linker 用于以下代码 Add Cuisine 由于 span 标签需要在 a 标签内。我无法根据需要获得输出。关于如何完成它的任何建议? 最佳答案 禁用链
大家好, 我最近开发了一个应用程序,很快就会提交到 App Store。我想免费提交这个应用程序,并想知道我是否可以实现一个带有 PayPal 捐赠标志的按钮,上面基本上写着“捐赠用于开发”或与此相关
我想尝试在 dlang 中使用 libuv。我下载了这样的 dlang 绑定(bind): git clone git@github.com:tamediadigital/libuv.git 现在我接
我有一个节点(节点 a),各种其他节点(节点 b/c/d/e)与之引用。 我可以创建一个带有参数的 View 作为我正在查看的节点(节点 a),并获取引用该节点的节点列表。 基本上在节点 a 查看节点
我正在尝试建立一个常见问题页面,上面有目录,下面有答案。我想点击目录中的一个问题,并在同一页面上链接到相应的答案。我如何在 CakePHP 中使用 $this->Html->link() 执行此操作方
在 WooCommerce 3.0+ 中,我使用 js 创建了一些选项卡,每个选项卡中包含来自不同类别的产品。我已经设法修改了简单产品的添加到购物车链接,其中点击了 addtocart 按钮它进入下一
Delphi 2007/2009 奇怪的问题在这里: 根据设计时定义的组件属性,是否可以在链接中包含文件或保留文件? 示例:如果我将 SomeProperty 保留为真,则在编译时,单元 SomeUn
我是一名优秀的程序员,十分优秀!