Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.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
Iphone 如何执行OpenGL ES 2.0着色器矩阵乘法?_Iphone_Opengl Es_Transform_Shader_Matrix - Fatal编程技术网

Iphone 如何执行OpenGL ES 2.0着色器矩阵乘法?

Iphone 如何执行OpenGL ES 2.0着色器矩阵乘法?,iphone,opengl-es,transform,shader,matrix,Iphone,Opengl Es,Transform,Shader,Matrix,我试图用着色器程序变换顶点,但我无法理解结果。 我准备了投影、视图(trans)和模型(trans)矩阵: 首先,我有一个顶点着色器函数:viewproj*position。在Objective-C程序中,我从单位数乘以平移和投影矩阵开始,然后统一到viewproj。我可以从透视图中看到几何体对全局平移的响应 我想单独统一矩阵,并在着色器中操作所有矩阵。我统一了proj、view(trans)、model(trans)并尝试使用着色器:projviewmodelposition。但是SEM没有很

我试图用着色器程序变换顶点,但我无法理解结果。 我准备了投影、视图(trans)和模型(trans)矩阵:

首先,我有一个顶点着色器函数:viewproj*position。在Objective-C程序中,我从单位数乘以平移和投影矩阵开始,然后统一到viewproj。我可以从透视图中看到几何体对全局平移的响应

我想单独统一矩阵,并在着色器中操作所有矩阵。我统一了proj、view(trans)、model(trans)并尝试使用着色器:projviewmodelposition。但是SEM没有很好地转换(输出表示?),然后我尝试简单地模拟我的第一次转换。我在着色器中尝试使用(viewproj)位置来执行相同的操作,但viewproj不是在C中完成的

我使用第0-4列中描述的矩阵作为第一列。以及中定义的结构

现在我不知道我错过了什么,希望有一个简单的答案。如果有人有线索,谢谢

我可以调试这个着色器吗?(XCode+iphoneos模拟器)

我首先用平移和投影矩阵乘以单位,然后统一到viewproj

它是identity->translation->viewproj->projection,正如您所说:

projviewmodel*位置

你很难读。你能改发一些代码吗

如果有人有线索,谢谢

OpenGL着色器中的矩阵乘法如下所示:

    gl_Position = projectionMat*modelViewMat*vec4(inPos, 1.0);
inPos是vec3的顶点位置

如果需要更多矩阵(DirectX样式),则必须使用

    gl_Position = projectionMat*viewMat*worldMat*vec4(inPos, 1.0);
理想情况下,矩阵应该从OpenGL中提取,投影不应该是身份转换。如果需要二维图形,请使用二维

此外,在将矩阵加载到统一格式时,您可能会意外地转置或忘记转置矩阵

无论如何,如果你在使用着色器时遇到问题,首先编写一个应用程序,在不使用着色器的情况下进行渲染,然后编写着色器并从OpenGL加载变换矩阵,然后将其转换为自定义矩阵计算例程(如果需要)

根据OpenGL版本的不同,您可能有ftTransform()GLSL函数,这将进一步简化事情