对于OpenGL和GLSL,我是一个完全新手.也就是说,当使用ShaderToy时,我经常会看到人们使用类似的东西:
vec2 uv = fragCoord / iResolution;
vec2 centerPoint = vec2(0.5);
vec2 distanceVector = uv - centerPoint;
float dist = sqrt(dot(distanceVector, distanceVector));
Run Code Online (Sandbox Code Playgroud)
通过OpenGL的distance
功能:
vec2 uv = fragCoord / iResolution;
vec2 centerPoint = vec2(0.5);
float dist = distance(uv, centerPoint);
Run Code Online (Sandbox Code Playgroud)
我只是好奇为什么会这样(我的猜测是它与速度或支持有关distance
).
我松散地理解,如果参数相同,点积的平方根等于向量的长度:距离?
可能重复:
数组大小太大 - 红宝石
对不起,如果有人询问,我环顾四周,但没有找到我想要的东西.
我使用ruby和mysql来创建一个基于mysql表中单个列的数组.例如,假设我有一列用户名:
users = [] #declare array
users.clear #clear array so that it remains so fresh and so clean on each restart
# Update the list of users to follow
res = dbh.query("SELECT user FROM usernameDB")
while row = res.fetch_row do
users << row[0] #adds each user to the array
end
Run Code Online (Sandbox Code Playgroud)
到目前为止,当我们开始接收更多用户时,这已经很好了.现在代码给了我未知的错误.
在尝试进行故障排除时,我只是注释掉了大部分内容并使用几个用户名构建了数组,一切都恢复了.所以我的问题是,ruby数组中的数量或项目是否有限制?
谢谢!
我正在研究Ray Wenderlich 的OpenGL for iOS教程,试图将他的代码从Objective-C转换为Swift.
我是OpenGL和Swift的新手,并且相信我的问题与我如何翻译Objective-C有关.原因如下:
在我的swift文件中设置包含OpenGL内容的视图,在最后的逻辑步骤(调用glDrawElements)上,应用程序将因EXC_BAD_ACCESS警报而崩溃.但是,如果我将此部分代码移动到Objective-C文件,则应用程序将按预期工作.
Swift版本的代码:
var positionDataOffset: Int = 0
glVertexAttribPointer(self.positionSlot, 3 as GLint, GL_FLOAT.asUnsigned(),
GLboolean.convertFromIntegerLiteral(UInt8(GL_FALSE)),
VertexDataSource.sizeOfVertex(), &positionDataOffset)
var colorDataOffset = (sizeof(Float) * 3) as AnyObject
glVertexAttribPointer(self.positionSlot, 4 as GLint, GL_FLOAT.asUnsigned(),
GLboolean.convertFromIntegerLiteral(UInt8(GL_FALSE)),
VertexDataSource.sizeOfVertex(), VertexDataSource.vertexBufferOffset())
var vertexOffset: Int = 0
glDrawElements(GL_TRIANGLES.asUnsigned(), VertexDataSource.vertexCount(),
GL_UNSIGNED_BYTE.asUnsigned(), &vertexOffset)
Run Code Online (Sandbox Code Playgroud)
这是Objective-C版本:
glVertexAttribPointer(position, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), 0);
glVertexAttribPointer(color, 4, GL_FLOAT, GL_FALSE, sizeof(Vertex),
(GLvoid*) (sizeof(float) * 3));
glDrawElements(GL_TRIANGLES, sizeof(Indices)/sizeof(Indices[0]), GL_UNSIGNED_BYTE, 0);
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,Swift更加冗长......我和其他人一样都是新手.:)
另一个注意事项:在Swift版本中,您将看到对类的几个类方法的调用VertexDataSource
.从本质上讲,我无法决定如何将Objective-C的某些部分转换为swift,因此决定(现在)在Objective-C中创建一个可以为Swift代码提供这些属性的小类.以下是Objective-C中的那些方法:
+ (GLint)sizeOfVertex {
return sizeof(Vertex);
} …
Run Code Online (Sandbox Code Playgroud) 我想创建一个书签来打开谷歌浏览器的设置面板,并通过单击清除我的缓存.
有一段时间了,我有一个书签打开chrome的设置面板,已经选择了'clear cache'设置.单击书签(通常在新选项卡中打开它)后,我必须打开选项卡并提交表单.然而,在开发这项任务时我必须经常这样做,而这几个重复的步骤似乎是不必要的.
此链接打开页面以清除一个缓存(显然仅限Chrome用户):chrome:// chrome/settings/clearBrowserData #cache
我最近发现了bookmarklet,并认为通过单击完成清除缓存的任务是一个很好的方法.但是,我发现在设置页面(上面链接)上甚至将基本的javascript示例放在地址栏中都无法正常工作.
例如,这适用于任何给定页面上的地址栏,但不适用于Chrome设置页面:
javascript:alert('hello stackoverflow');
Run Code Online (Sandbox Code Playgroud)
有没有办法从chrome设置页面执行javascript?还有其他选择吗?我正在寻找实现这一目标的任何路线,并希望沿途学习一些东西,即使这意味着做一些邪恶.:)
arrays ×1
bookmarklet ×1
glsl ×1
ios ×1
javascript ×1
objective-c ×1
opengl ×1
opengl-es ×1
ruby ×1
shader ×1
swift ×1
webgl ×1