我最近在emberjs上读了很多东西,但对我来说并不是很清楚:我觉得有不同的渲染模板的方法.有人可以解释这些之间的差异:
{{render}}
{{partial}}
{{template}}
{{outlet}}
Run Code Online (Sandbox Code Playgroud)
我正在使用pre4,所以如果其中一些关键字已经过时,请通知.
对于我目前的项目,我正在阅读iPhone的主摄像头输出.然后我通过以下方法将pixelbuffer转换为缓存的OpenGL纹理:CVOpenGLESTextureCacheCreateTextureFromImage.这在处理用于预览的相机帧时非常有用.使用iPhone 3GS,4,4S,iPod Touch(第4代)和IOS5,IOS6进行不同组合测试.
但是,对于具有非常高分辨率的实际最终图像,这仅适用于以下组合:
这不适用于:iPhone 4 + IOS6.
控制台中的确切错误消息:
Failed to create IOSurface image (texture)
2012-10-01 16:24:30.663 GLCameraRipple[676:907] Error at CVOpenGLESTextureCacheCreateTextureFromImage -6683
Run Code Online (Sandbox Code Playgroud)
我通过改变Apple的GLCameraRipple项目来解决这个问题.你可以在这里查看我的版本:http://lab.bitshiftcop.com/iosurface.zip
以下是我将stilloutput添加到当前会话的方法:
- (void)setupAVCapture
{
//-- Create CVOpenGLESTextureCacheRef for optimal CVImageBufferRef to GLES texture conversion.
CVReturn err = CVOpenGLESTextureCacheCreate(kCFAllocatorDefault, NULL, [EAGLContext currentContext], NULL, &_videoTextureCache);
if (err)
{
NSLog(@"Error at CVOpenGLESTextureCacheCreate %d", err);
return;
} …Run Code Online (Sandbox Code Playgroud) 在我目前的项目中,我有一个drupal后端,为我的前端公开了休息服务.对我的后端的一些调用并不像url实体那样被编码.
所以我的问题是:如何禁用某些参数的URL编码?
例:
我需要在不同的搜索字词之间用"+"标记我的后端.像这样:
http://backend.com/someservice/search/?terms=search+terms+here
Run Code Online (Sandbox Code Playgroud)
但角度,设置如下:
var resource = $resource(
backendUrl + '/views/:view', {},
{
'search': {params:{view:'searchposts'}, isArray:true}
}
);
// search posts for the given terms
this.searchPosts = function(terms, limit) {
resource.search({search:terms.join('+'), limit:limit});
};
Run Code Online (Sandbox Code Playgroud)
调用以下网址:
http://backend.com/someservice/search/?terms=search%2Bterms%2Bhere
Run Code Online (Sandbox Code Playgroud)
有什么建议?谢谢!
我已经学习OpenGL几天了,通过一些教程和编写我自己的一些实验.但有一件事我真的不明白是阻止我继续下去的.我一直在谷歌搜索几个小时,但我的问题还没有找到答案.
我应该在哪里为每个顶点指定每个单独的颜色值和纹理坐标?这些属性是否应始终列在与顶点位置相同的数组(结构)中?像这样:
const Vertex Vertices[] = {
// Front
{{1, -1, 0}, {1, 0, 0, 1}, {TEX_COORD_MAX, 0}},
{{1, 1, 0}, {0, 1, 0, 1}, {TEX_COORD_MAX, TEX_COORD_MAX}},
{{-1, 1, 0}, {0, 0, 1, 1}, {0, TEX_COORD_MAX}},
{{-1, -1, 0}, {0, 0, 0, 1}, {0, 0}},
...
Run Code Online (Sandbox Code Playgroud)
或者有没有办法将颜色值和纹理坐标放在单独的数组中?但问题出现了:如何glDrawElements使用单独的数组调用?
如果你想知道我为什么要分离这些值:我现在正在obj-c中创建我自己的.obj解析器,我想知道:如果加载没有纹理的模型并且只想在颜色上显示颜色怎么办?宾语?或者:如果你想加载一个只有一个纹理映射到它但每个顶点没有单独颜色的模型怎么办?并且:不会将过多的数据放在Vertex结构中的颜色值和纹理坐标膨胀.
我目前正在对OpenGL和着色器进行一些研究,但我似乎无法弄清楚glBlendMode在着色器中使用混合模式或在着色器中编写自己的混合模式之间是否存在任何根本差异.
选择前者或后者的原因是什么?通过选择一个而不是另一个会有任何性能瓶颈吗?或者这仅仅是个人偏好的问题?
我目前的设置如下(基于Brad Larson的ColorTrackingCamera项目):
我正在使用一个AVCaptureSession集合AVCaptureSessionPreset640x480,我让输出通过OpenGL场景作为纹理运行.然后由片段着色器操纵该纹理.
我需要这种"低质量"预设,因为我想在用户预览时保持高帧率.然后我想在用户拍摄静态照片时切换到更高质量的输出.
首先,我认为我可以改变它sessionPreset,AVCaptureSession但这会迫使相机重新聚焦,这会破坏可用性.
[captureSession beginConfiguration];
captureSession.sessionPreset = AVCaptureSessionPresetPhoto;
[captureSession commitConfiguration];
Run Code Online (Sandbox Code Playgroud)
目前我正在尝试向AVCaptureStillImageOutputAVCaptureSession 添加第二个,但我得到一个空像素缓冲,所以我觉得我有点卡住了.
这是我的会话设置代码:
...
// Add the video frame output
[captureSession beginConfiguration];
videoOutput = [[AVCaptureVideoDataOutput alloc] init];
[videoOutput setAlwaysDiscardsLateVideoFrames:YES];
[videoOutput setVideoSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey]];
[videoOutput setSampleBufferDelegate:self queue:dispatch_get_main_queue()];
if ([captureSession canAddOutput:videoOutput])
{
[captureSession addOutput:videoOutput];
}
else
{
NSLog(@"Couldn't add video output");
}
[captureSession commitConfiguration];
// Add still output
[captureSession beginConfiguration];
stillOutput = [[AVCaptureStillImageOutput alloc] init];
if([captureSession canAddOutput:stillOutput]) …Run Code Online (Sandbox Code Playgroud) 我在emberjs中实现master-detail视图时有点困惑.
我的大多数观点都有一个主视图,它只是一个标题列表.然后,用户可以点击这样的标题,并且他/她获得具有细节视图的叠加(有点像典型的新站点页面).
现在,我注意到当ember询问主视图的信息时,它会调用以下网址:/backend/newsitems.但是这些调用会变得非常繁重,因为后端会返回所有newsitems的列表及其所有详细数据.但这感觉不对,因为用户只是在查看主视图并且还没有请求任何详细信息.
有没有办法让ember明确主视图只需要几个属性,并且对详细信息的请求应该获得该特定项的额外属性?
举个例子,我的模型看起来像这样:
App.Newsitem = DS.Model.extend({
slug: DS.attr('string'),
type: DS.attr('string'),
title: DS.attr('string'),
summary: DS.attr('string'),
text: DS.attr('string'),
thumb: DS.attr('string'),
date: DS.attr('date'),
mediaitems: DS.hasMany('App.Mediaitem')
});
Run Code Online (Sandbox Code Playgroud)
但是我的主视图只需要id type title显示标题列表和该标题旁边的图标.然后,当用户请求一个newsitem的详细信息时,应该获取所有其他属性.
我正在开发一款适用于iPhone的相机应用程序,在其中我将相机输入转换为OpenGL纹理,然后将其映射到3D对象(目前是透视投影中的平面,为了简单起见).在将相机输入映射到此3D平面之后,我将此3D场景渲染为纹理,然后将其用作正交空间中的平面的新纹理(以在我的片段着色器中应用其他滤镜).
只要我将所有内容保留在正交投影中,我的渲染纹理的分辨率就相当高.但是从我投影透视投影的那一刻起,渲染纹理的分辨率非常低.
比较:

如您所见,与其他两个图像相比,最后一个图像的分辨率非常低.所以我猜我做错了什么.
我目前没有在我的任何帧缓冲器上使用多重采样,我怀疑我是否还需要它来解决我的问题,因为正交场景工作得很好.
我渲染的纹理是2048x2048(最终将作为图像输出到iPhone相机胶卷).
以下是我认为可能相关的源代码的一些部分:
用于创建输出到屏幕的帧缓冲区的代码:
// Color renderbuffer
glGenRenderbuffers(1, &colorRenderBuffer);
glBindRenderbuffer(GL_RENDERBUFFER, colorRenderBuffer);
[context renderbufferStorage:GL_RENDERBUFFER
fromDrawable:(CAEAGLLayer*)glView.layer];
// Depth renderbuffer
glGenRenderbuffers(1, &depthRenderbuffer);
glBindRenderbuffer(GL_RENDERBUFFER, depthRenderbuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, width, height);
// Framebuffer
glGenFramebuffers(1, &defaultFrameBuffer);
glBindFramebuffer(GL_FRAMEBUFFER, defaultFrameBuffer);
// Associate renderbuffers with framebuffer
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
GL_RENDERBUFFER, colorRenderBuffer);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
GL_RENDERBUFFER, depthRenderbuffer);
Run Code Online (Sandbox Code Playgroud)
TextureRenderTarget类:
void TextureRenderTarget::init()
{
// Color renderbuffer
glGenRenderbuffers(1, &colorRenderBuffer);
glBindRenderbuffer(GL_RENDERBUFFER, colorRenderBuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_RGB8_OES,
width, height);
// Depth renderbuffer
glGenRenderbuffers(1, &depthRenderbuffer);
glBindRenderbuffer(GL_RENDERBUFFER, depthRenderbuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16,
width, height);
// Framebuffer
glGenFramebuffers(1, &framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); …Run Code Online (Sandbox Code Playgroud) 我试图找出如何在我的余烬路线中使用slug(我的模型的属性)来获得更清晰的网址.
我希望我的路线看起来像这样:
http://www.server.com/#/newsitems/newsitem-title-in-slug-format/1
Run Code Online (Sandbox Code Playgroud)
代替:
http://www.server.com/#/newsitems/1/1
Run Code Online (Sandbox Code Playgroud)
如您所见,我想用实际的slug属性替换newsitem的id.这是我的Newsitem模型的样子:
App.Newsitem = DS.Model.extend({
slug: DS.attr('string'),
title: DS.attr('string'),
summary: DS.attr('string'),
});
Run Code Online (Sandbox Code Playgroud)
slug属性以这种格式接收一个干净的文本属性: title-in-slug-format
这是我目前的路由器地图:
App.Router.map(function(){
this.resource('newsitems', function(){
this.resource('newsitem', {path:':newsitem_id'});
});
});
Run Code Online (Sandbox Code Playgroud)
我试着更换newsitem_id用newsitem_slug,但是这是行不通的.还有其他建议吗?
我目前正在使用opengl进入c ++进行低级编码.我来自一个沉重的objc背景,所以我对内存管理有一些了解,但我似乎无法得到"boost"库如何管理容器类型ptr_vector.
我认为我的问题与我不知道如何ptr_vector管理自身及其对象的破坏这一事实有关.
请看下面的代码:
// Header file
...
ptr_vector<IObject3D> objects;
...
// Implementation file
...
void ApplicationEngine::init()
{
WavefrontObject3D *object = new WavefrontObject3D("Ninja.obj");
objects.push_back(object);
}
...
Run Code Online (Sandbox Code Playgroud)
所以,对于实际问题:我是否通过"对象"变量在这里创建泄漏?
我习惯于使用objc中的显式调用手动保留和释放我的对象:之前我不得不alloc init使用WavefrontObject3D object,将其添加到数组中,然后release将相同的对象添加到相同的对象中以避免泄漏.
但是当我delete object在push_back调用之后添加一个时,会调用WavefrontObject3D的解构object函数.这给了我一个提示,ptr_vector即不保留object变量.我的假设是否正确?
另外但相关的问题:假设我想要销毁包含类ApplicationEngine,我不必在ptr_vector它管理的元素上调用某种解构函数吗?
我目前正在开发适用于3.0手机和iPhone 4的应用程序.我的设计师制作了高分辨率和低分辨率版本的设计.我们的应用程序现在是6 MB,我个人认为很多,所以我想知道:为什么不只是为所有设备使用高分辨率资产?这种技术的缺点是什么?
在此先感谢巴特
我正在为 OpenGL ES 2.0 在 objc 中编写我自己的 .obj 解析器,以便更好地了解 OpenGLES 的工作原理。加载顶点并显示带有顶点颜色的模型就像一个魅力。只是一个小提示:我正在使用索引缓冲区。
真正的问题是纹理 atm 的映射。正如您将在下面看到的更多内容一样,我的纹理没有按照应有的方式进行映射。
这是我认为 .obj 格式的工作原理,如果我错了,请纠正我:“f”线描述了一个面,其中斜线前的数字定义了顶点的索引,斜线后的数字定义了纹理坐标.
考虑以下 .obj 文件(由 Cinema 4D 导出):
v -75 75 -50
v 75 75 -50
v -75 -75 -50
v 75 -75 -50
vt 0 0
vt 0 1
vt 1 1
vt 1 0
f 4/3 3/2 1/1
f 2/4 4/3 1/1
Run Code Online (Sandbox Code Playgroud)
以及以下纹理:

现在,当我在 OpenGL ES 3D 空间中定位顶点并尝试将纹理坐标映射到每个单独的顶点时,映射出错了。我可以通过移动一些纹理坐标值来解决这个问题,但我意识到这不是这样做的方法。我还尝试编辑我的一些 .obj 导出器设置以翻转轴和/或 uv 映射,但没有一个会导致正确的映射。关于 .obj 文件格式,我的理论中是否缺少某些内容?我可能已经说过的一件事是:我昨天读到 .obj 格式的坐标系将 topleft 定义为纹理的锚点。所以我已经在解析中解决了这个问题。
这是当前情况的一个小总结: 更新:纹理的坐标系是实际的 .obj 纹理坐标系,而不是 OpenGL …
我正在尝试在我的车把模板中打印日期attr.但输出是空的.我该如何呈现它?
我的型号:
App.Post = DS.Model.extend({
type: DS.attr('string'),
title: DS.attr('string'),
summary: DS.attr('string'),
body: DS.attr('string'),
date: DS.attr('date')
});
App.Post.FIXTURES = [
{id:1, type:"news", title:"Some", summary:"Lorem ", date:new Date()},
{id:2, type:"gallery", title:"Some", summary:"Lorem", date:new Date()}
];
Run Code Online (Sandbox Code Playgroud)
我的车把模板:
<script type="text/x-handlebars" data-template-name="posts">
{{#each post in controller}}
{{post.date}}: {{post.type}}- {{post.title}}
{{/each}}
</script>
Run Code Online (Sandbox Code Playgroud) ember.js ×4
iphone ×3
opengl-es ×3
ember-data ×2
ios ×2
textures ×2
angularjs ×1
avfoundation ×1
boost ×1
c++ ×1
ios4 ×1
javascript ×1
opengl ×1
parsing ×1
resolution ×1
rest ×1
shader ×1
uv-mapping ×1
vbo ×1
vertex ×1
wavefront ×1