我有一个使用GLSL着色器的项目.
除非出现问题或明确打开一些额外的调试输出,否则此项目不会向stdout打印任何内容.
当着色器编译失败时,给定的日志长度glGetProgramInfoLog> 0,有时当它> 0时成功,并给出编译警告.当你有一个完美编译的着色器时,日志长度<1 ...这就是我在开发机器上的NVidia卡上的工作方式.
对于我的罪过,我也在带有intel集成显卡的笔记本电脑上做了一些开发.代码运行正常,但每当我执行着色器编译时,日志包含:
"shader已成功编译为在硬件上运行"
这是非常烦人的,因为我现在无法决定是否应该打印出字符串,除了某种字符串分析,例如:
strstr("successfully",log)
Run Code Online (Sandbox Code Playgroud)
希望这显然是为什么这是不可取的.如果有的话,我可以判断一条消息是否值得使用OpenGL api打印出来?
编辑:
如果我使用glGetShaderiv(shaderobj,GL_COMPILE_STATUS,&err);那么我没有得到编译警告,只有错误.
问题是相当自我解释的.我问的是使用可能来自任何地方的纹理坐标(统一,变化,另一个纹理提取).
比方说,我在mipmapped(或各向异性过滤)纹理上进行纹理提取,并使用在顶点着色器中设置的变化的平方.我假设glsl不能确定这样的任意复杂函数的导数,那么它如何知道使用哪个mip级别?
谢谢.
说有一个表格:
<form enctype="multipart/form-data" method="post">
<input name='foo'>
<input name='foo'>
<input type=submit>
</form>
Run Code Online (Sandbox Code Playgroud)
发布到我的PHP脚本.如何(如果有的话)我可以找到这些框中提交的两个值.$_POST['foo']给出第二个值,但我想要两个.
我意识到这可以通过使用<input name='foo[]'>(这会产生$_POST['foo']一个数组)来完成.由于某些编码决定,添加方括号是不可取的(读:需要一些重组),似乎应该有一个简单的方法来做到这一点.
如果enctype是'application/x-www-form-urlencoded',那么解析它会很容易,但"multipart/form-data"更复杂,可能有30MB的文件!
更不用说PHP已经解析了帖子数据.
请有人告诉我,PHP保存了从$ _POST解析的信息,并且我可以在不重新解析的情况下访问它.
谢谢!
当我尝试编译以下代码时......
#include <vector>
template <class T> void DoNothing()
{
std::vector<T>::iterator it;
}
int main(int argc, char**argv)
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
g ++说:
test.cpp:5:错误:预期`;' 在'它'之前
我不明白为什么这是一个问题.如果我用它替换它std::vector<int>::iterator,比如,它按预期工作正常.
你可以看到我没有实例化这个函数,所以g ++必须有模板定义本身的问题,但我看不出它是如何无效的.
感谢您提供有关最新情况的任何建议.
NB我实际上是在尝试编写模板化的类并且遇到地图而不是向量的问题,但这是我问题的最简单的测试用例.