当前位置: 编程技术>移动开发
本页文章导读:
▪提高效率 惯用的几个xcode快捷键 提高效率 常用的几个xcode快捷键能用好快捷键,不仅仅可以提高工作效率,而且让你看起来更加的自信和能干,下面几个常用的快捷键,希望对你在工作中有帮助
1.首先说明一下几个标示的.........
▪ motorola 扫描头有关解释 motorola 扫描头相关解释motorola scanner datasheet相关解释(以下通过Simple Serial Interface进行设置,非扫描官方datasheet的设置条码):
One Discrete Length:一个单独的条码长度,就是扫描头设置以后,只支.........
▪ OpenGL ES2学习札记(8)- Varying变量 OpenGL ES2学习笔记(8)-- Varying变量上一篇文章里绘制的三角形,颜色都是写死在Fragment Shader里的,这篇文章介绍如何把颜色写到顶点数据里并且在Shader里使用Varying变量实现颜色插值。
实例代.........
[1]提高效率 惯用的几个xcode快捷键
来源: 互联网 发布时间: 2014-02-18
提高效率 常用的几个xcode快捷键
能用好快捷键,不仅仅可以提高工作效率,而且让你看起来更加的自信和能干,下面几个常用的快捷键,希望对你在工作中有帮助
1.首先说明一下几个标示的意思
Command ⌘
Control ⌃
Option ⌥
Shift ⇧
Click ʘ
2. 文档浏览(⌥ ʘ)
打开文档(⌥ʘʘ)
3. xxx.h 文件和xxx.m 文件之间的切换(^⌘↑ ^⌘↓)
4. 单行注释(⌘/)
5. 显示或隐藏debug area (⇧⌘Y)
6. 查找 (⌘F)
查找并替换 (⌥⌘F)
全工程查找 (⇧⌘F)
全工程查找并替换(⌥⇧⌘F)
参考:http://nshipster.com/xcode-key-bindings-and-gestures/
[2] motorola 扫描头有关解释
来源: 互联网 发布时间: 2014-02-18
motorola 扫描头相关解释
motorola scanner datasheet相关解释(以下通过Simple Serial Interface进行设置,非扫描官方datasheet的设置条码):
One Discrete Length:一个单独的条码长度,就是扫描头设置以后,只支持指定的一个长度的条码,发送格式:指定的条码长度作为长度参数1的值,长度参数2的值设置为0x00即可(比如设置interleaved 2 of 5 类型的只支持14位的条码,发送的参数为:0x16 14 0x17 00 注:0x16为长度参数1,0x17为长度参数2).
Two Discrete Lengths:两个单独的条码长度都可以支持,比如支持10位的和14位的,这时发送格式为:指定的长度条码长度大的数值在前,小的数值在后(比如设置interleaved 2 of 5 类型的只支持10位和14位的条码,发送的参数为:0x16 14 0x17 10 注:0x16为长度参数1,0x17为长度参数2 ).
Length Within Range: 设置一个条码支持的长度范围,比如支持从10位到14位的条码(包含10位和14位),这时发送的格式为:指定的长度范围最小的数值在前,最大的数值在后(比如设置interleaved 2 of 5类型的支持10位到14位的条码,发送的参数为:0x16 10 0x17 14 注:0x16为长度参数1,0x17为长度参数2 ).
注意事项:由于interleaved 2 of 5和 discrete 2 of 5类型的条码的特殊性,摩托罗拉官方建议以One Discrete Length 或 Two Discrete Lengths这种方式设置扫描头,防止扫描到的数据可能部分缺少。
[3] OpenGL ES2学习札记(8)- Varying变量
来源: 互联网 发布时间: 2014-02-18
OpenGL ES2学习笔记(8)-- Varying变量
上一篇文章里绘制的三角形,颜色都是写死在Fragment Shader里的,这篇文章介绍如何把颜色写到顶点数据里并且在Shader里使用Varying变量实现颜色插值。
实例代码和效果把下面的脚本复制到OpenGL Console里:
import java.nio.ByteBuffer
import java.nio.ByteOrder
import javax.media.opengl.GL
def vertexShaderCode = """
attribute vec4 a_Position;
attribute vec4 a_Color;
varying vec4 v_Color;
void main() {
gl_Position = a_Position;
v_Color = a_Color;
}
"""
def fragmentShaderCode = """
precision mediump float;
varying vec4 v_Color;
void main() {
gl_FragColor = v_Color;
}
"""
def shaderProgram = glob.compileAndLink(vertexShaderCode, fragmentShaderCode)
def aPositionLocation = shaderProgram.getAttribLocation("a_Position")
def aColorLocation = shaderProgram.getAttribLocation("a_Color")
shaderProgram.use()
def BYTES_PER_FLOAT = 4
def POSITION_ELEMENT_COUNT = 2
def COLOR_ELEMENT_COUNT = 3
def STRIDE = (POSITION_ELEMENT_COUNT + COLOR_ELEMENT_COUNT) * BYTES_PER_FLOAT
def POINT_COUNT = 3
def vertices = [
//x y r g b
0.0f, 0.0f, 1.0f, 0.0f, 0.0f,
0.8f, 0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.8f, 0.0f, 0.0f, 1.0f,
] as float[]
def vertexData = ByteBuffer
.allocateDirect(vertices.length * BYTES_PER_FLOAT)
.order(ByteOrder.nativeOrder())
.asFloatBuffer()
vertexData.put(vertices)
vertexData.position(0)
gl.glVertexAttribPointer(aPositionLocation,
POSITION_ELEMENT_COUNT, gl.GL_FLOAT, false, STRIDE, vertexData)
gl.glEnableVertexAttribArray(aPositionLocation)
vertexData.position(POSITION_ELEMENT_COUNT)
gl.glVertexAttribPointer(aColorLocation,
COLOR_ELEMENT_COUNT, gl.GL_FLOAT, false, STRIDE, vertexData)
gl.glEnableVertexAttribArray(aColorLocation)
gl.glClear(gl.GL_COLOR_BUFFER_BIT)
gl.glDrawArrays(gl.GL_TRIANGLES, 0, POINT_COUNT)
效果:
顶点颜色属性
先来看看Vertex Shader代码:
attribute vec4 a_Position;
attribute vec4 a_Color;
varying vec4 v_Color;
void main() {
gl_Position = a_Position;
v_Color = a_Color;
}
现在有两个vec4类型的attribute变量,一个代表顶点的位置(xyzw),一个代表颜色(rgba)。我画了个示意图:
def BYTES_PER_FLOAT = 4 def POSITION_ELEMENT_COUNT = 2 def COLOR_ELEMENT_COUNT = 3 def STRIDE = (POSITION_ELEMENT_COUNT + COLOR_ELEMENT_COUNT) * BYTES_PER_FLOAT def POINT_COUNT = 3 def vertices = [ //x y r g b 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.8f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.8f, 0.0f, 0.0f, 1.0f, ] as float[]除了位置(x和y坐标)外,我们把颜色(rgb)也放到了数组里,如下图所示:
def shaderProgram = glob.compileAndLink(vertexShaderCode, fragmentShaderCode)
def aPositionLocation = shaderProgram.getAttribLocation("a_Position")
def aColorLocation = shaderProgram.getAttribLocation("a_Color")
shaderProgram.use()
...
vertexData.position(0)
gl.glVertexAttribPointer(aPositionLocation,
POSITION_ELEMENT_COUNT, gl.GL_FLOAT, false, STRIDE, vertexData)
gl.glEnableVertexAttribArray(aPositionLocation)
vertexData.position(POSITION_ELEMENT_COUNT)
gl.glVertexAttribPointer(aColorLocation,
COLOR_ELEMENT_COUNT, gl.GL_FLOAT, false, STRIDE, vertexData)
gl.glEnableVertexAttribArray(aColorLocation)
上面这段代码把Vertex Shader和顶点数据联系在了一起:
Vertex Shader和Fragment Shader都定义了一个vec4类型的Varying变量,这个变量将Vertex和Fragment Shader连接了起来。Vertex Shader把顶点的颜色属性传递给varying变量(v_Color = a_Color;),然后OpenGL会对其进行插值,这样我们就可以在Fragment Shader里使用插值后的变量了(gl_FragColor = v_Color;)。
最新技术文章: