小编bra*_*ith的帖子

为什么人们使用sqrt(dot(distanceVector,distanceVector))而不是OpenGL的距离函数?

对于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).

我松散地理解,如果参数相同,点积的平方根等于向量的长度:距离?

opengl shader glsl webgl

10
推荐指数
2
解决办法
4470
查看次数

ruby中的数组大小是否有限制?

可能重复:
数组大小太大 - 红宝石

对不起,如果有人询问,我环顾四周,但没有找到我想要的东西.

我使用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数组中的数量或项目是否有限制?

谢谢!

ruby arrays

8
推荐指数
1
解决办法
8651
查看次数

在Swift中调用glDrawElements而在Objective-C中调用时,OpenGL EXC_BAD_ACCESS

我正在研究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)

opengl-es objective-c ios swift

5
推荐指数
1
解决办法
1492
查看次数

可以在Google Chrome设置面板中的地址栏(bookmarklet)中运行Javascript吗?

我想创建一个书签来打开谷歌浏览器的设置面板,并通过单击清除我的缓存.

有一段时间了,我有一个书签打开chrome的设置面板,已经选择了'clear cache'设置.单击书签(通常在新选项卡中打开它)后,我必须打开选项卡并提交表单.然而,在开发这项任务时我必须经常这样做,而这几个重复的步骤似乎是不必要的.

此链接打开页面以清除一个缓存(显然仅限Chrome用户):chrome:// chrome/settings/clearBrowserData #cache

我最近发现了bookmarklet,并认为通过单击完成清除缓存的任务是一个很好的方法.但是,我发现在设置页面(上面链接)上甚至将基本的javascript示例放在地址栏中都无法正常工作.

例如,这适用于任何给定页面上的地址栏,但不适用于Chrome设置页面:

javascript:alert('hello stackoverflow');
Run Code Online (Sandbox Code Playgroud)

有没有办法从chrome设置页面执行javascript?还有其他选择吗?我正在寻找实现这一目标的任何路线,并希望沿途学习一些东西,即使这意味着做一些邪恶.:)

javascript google-chrome bookmarklet

4
推荐指数
1
解决办法
7583
查看次数