小编Sli*_*son的帖子

将纹理数据写入深度缓冲区

我正在尝试实现下面描述的技术:用深度合成图像.

我们的想法是使用现有纹理(从图像加载)作为深度蒙版,基本上伪造3D.

我面临的问题是在openglES中没有glDrawPixels.有没有办法在iPhone上完成同样的事情?

opengl-es gldrawpixels depth-buffer ios

6
推荐指数
1
解决办法
4901
查看次数

像NSTableView一样的UITableView

我过去为iOS开发过,最近转向了mac开发.我开始了一个"感受"事物的项目,并遇到了一个问题.我试图创建一个NSTableView来显示多个项目,包括一个标签,一个2 UIImageViews和一个UIButton.NSTableViews与iOS上的表格不同,我不能简单地创建一个自定义的TableViewCell(我认为).我希望它看起来的一个很好的例子是AlienBlue for Mac :(带有帖子信息的中间表)

AlienBlue for Mac

任何人都可以阐明如何创建这个?

macos uitableview nstableview

5
推荐指数
2
解决办法
4292
查看次数

来自NSMethodSignature的BOOL编码错误

使用[NSMethodSignature getArgumentTypeAtIndex]函数时,我遇到了很奇怪的行为.根据objective-c 类型编码,它返回BOOL类型的'@'字符.如果我使用objc\runtime.h库方法method_getTypeEncoding BOOL类型被正确表示为'B',但是我不明白为什么它不能使用更高级别的层NSMethodSignature.以下代码演示了此问题:

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    NSInvocation* inv = [NSInvocation invocationWithMethodSignature:[self methodSignatureForSelector:@selector(viewDidAppear:)]];
    const char* encFromGetArgument = [[inv methodSignature] getArgumentTypeAtIndex:2];

    const char* encFromMethodSignature = method_getTypeEncoding(class_getInstanceMethod([self class], @selector(viewDidAppear:)));;
    const char* methodEncodingPure = [[[[NSString stringWithUTF8String:encFromMethodSignature] componentsSeparatedByCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]] componentsJoinedByString:@""] UTF8String];//remove stack sizes


    NSLog(@"BOOL arg from NSMethodSignature: %s", encFromGetArgument);
    NSLog(@"BOOL arg from objc/runtime.h: %c", methodEncodingPure[3]);//first type is for return, second is target, third is selector
}
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是(至少对男性而言)打印出以下内容:

来自NSMethodSignature的BOOL arg:@

来自objc/runtime.h的BOOL arg:B

我目前正在使用我自己的实现来避免这种奇怪的行为,但我想知道我是否遗漏了某些东西或者它只是一个bug.我唯一的线索是BOOL是原始的,就像这样,在调用objective-c方法时不能直接使用它.但是,当我尝试检查它[object isKingOfClass:[NSNumber class]]时返回NO.

UPDATE

好的我已将XCode更新到最新版本(6.1 6A1052d),情况大大改善.但是我现在的问题是将unsigned char编码与real bool编码区分开来.我知道在旧版本BOOL是typedef作为char,但我怎么能完成真正的char vs BOOL编码?我现在的结果是:

对于 …

objective-c ios ios7 ios8

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

在事件iOS上禁用和启用按钮

我有一个stopclock应用程序,并希望startCountButton按钮在最初按下时被禁用,然后stopCountButton按下按钮使其再次启用,以便只能按下一次启动按钮.这是我的代码

- (IBAction)startCount:(UIButton*)sender {
    countInt = 0;
    self.label.text = [NSString stringWithFormat:@"%i", countInt];
    timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(countTimer) userInfo:nil repeats:YES];
}

- (IBAction)stopCount:(UIButton*)sender {
    countInt = 0;
    [timer invalidate];
}

-(void)countTimer {
    countInt += 1;
    self.label.text = [NSString stringWithFormat:@"%i", countInt];
}
Run Code Online (Sandbox Code Playgroud)

我需要添加什么帮助?我不打算改变文本,只是禁用它

objective-c ios

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

OpenGL ES 2:顶点和片段着色器是否需要简单绘制?

我目前正在使用一些在运行时生成的几何图形并且仅使用纯色的绘图例程。在搜寻用于我的绘图的最小GL设置时(我与屏幕分辨率匹配并且在iOS上,但该问题也适用于其他ES 2平台),我看到大多数示例都使用顶点和片段着色器,但不是全部。

如果我不打算使用任何纹理或照明(只是直接进行颜色复制/混合),并且我不打算进行任何无法通过操纵视图矩阵进行的变换,那么我真的需要设置顶点吗?和/或片段着色器?如果没有,使用着色器比无着色器方法有什么优势吗?

shader opengl-es opengl-es-2.0

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

Swift let 在类中是可变的,为什么?

大家好,我想弄清楚为什么下面的 swift 代码允许我为班级中的 wee 字符串分配一个新值。我认为 let 是不可变的,但它在这里有效。有人可以解释一下。谢谢。

import Foundation


class MyClass {
    let wee:String

    init?(inInt:Int) {
        let j:String = "what"
        //j = "I shouldn't be able to do this wiht let" // error rightly so
        //println(j)
        self.wee = "wow"
        if inInt != 2 {
            return nil
        }
        self.wee = "hey"
        self.wee = "blas" // I shouldn't be able to do this
    }


}

if let myClass:MyClass = MyClass(inInt: 2) {
    myClass.wee // prints blas
}
Run Code Online (Sandbox Code Playgroud)

let swift

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

在SCNShadable入口点之间传递值

在OpenGL程序中,通常在顶点着色器中声明类似这样的内容

varying bool aBooleanVariable;
Run Code Online (Sandbox Code Playgroud)

然后在片段着色器中读取该值。您如何在SCNShadable入口点的框架内执行此操作?例如从SCNShaderModifierEntryPointGeometrySCNShaderModifierEntryPointFragment

接收到该参数似乎是通过使用pragma参数定义的,我提供我的测试SCNShaderModifierEntryPointFragment进行说明。

#pragma arguments
bool clipFragment

#pragma body

if (clipFragment) {
    discard_fragment();
}
Run Code Online (Sandbox Code Playgroud)

但是,参数pragma不适用于在SCNShaderModifierEntryPointGeometry入口点输出值 。

发现有一篇文章建议可以使用GLSL语法来完成,但是我试图找到Metal的方式,但我什至无法重现结果。

opengl-es scenekit glsles metal

4
推荐指数
2
解决办法
820
查看次数

Objective-c中的Extern C函数

我开发iPhone应用程序,并在更新到sdk 3.0后,我在链接时收到CFWriteStreamCreateWithFTPURL错误.这是我调用以获取错误的代码.

streamInfo.writeStream = CFWriteStreamCreateWithFTPURL(NULL, urlRefWrite);
Run Code Online (Sandbox Code Playgroud)

我有一个想法,它可以使用extern"C"解决,但在谷歌搜索后,我还没有找到我的问题的解决方案.有任何想法吗?

提前致谢

c objective-c extern iphone-sdk-3.0

3
推荐指数
1
解决办法
1万
查看次数

对于objective-c中的所有属性,getter是否相同?

这个简单的问题困扰着我.吸气剂是否相同

@property (nonatomic, retain) NSString *name
@property (nonatomic, copy) NSString *name 

- (NSString*) name{
    return name;    
}
Run Code Online (Sandbox Code Playgroud)

memory memory-management objective-c ios

3
推荐指数
1
解决办法
1465
查看次数

IPhone RGBA到ARGB

我使用glReadPixels抓取我的opengl场景的屏幕截图,然后在IOS 4上使用AVAssetWriter将它们转换为视频.我的问题是我需要将alpha通道传递给视频,该视频只接受kCVPixelFormatType_32ARGB和glReadPixels检索RGBA.所以基本上我需要一种方法将我的RGBA转换为ARGB,换句话说,首先放置alpha字节.

int depth = 4;
unsigned char buffer[width * height * depth];  
glReadPixels(0,0,width, height, GL_RGBA, GL_UNSIGNED_BYTE, &buffer);

CGDataProviderRef ref = CGDataProviderCreateWithData(NULL, &buffer), width*height*depth, NULL );

CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedLast;

CGImageRef image = CGImageCreate(width, height, 8, 32, width*depth, CGColorSpaceCreateDeviceRGB(), bitmapInfo, ref, NULL, true, kCGRenderingIntentDefault);

UIWindow* parentWindow = [self window];

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], kCVPixelBufferCGImageCompatibilityKey, [NSNumber numberWithBool:YES], kCVPixelBufferCGBitmapContextCompatibilityKey, nil];

CVPixelBufferRef pxbuffer = NULL;
CVReturn status = CVPixelBufferCreate(kCFAllocatorDefault, width, height, kCVPixelFormatType_32ARGB, (CFDictionaryRef) options, &pxbuffer);

NSParameterAssert(status == kCVReturnSuccess);
NSParameterAssert(pxbuffer …
Run Code Online (Sandbox Code Playgroud)

video argb rgba ios avassetwriter

2
推荐指数
1
解决办法
7300
查看次数

如何发现OpenGL ES帧率是否口吃 - 没有乐器?

一位朋友刚问我这个有趣的问题,我对此没有答案.

他正在制作游戏,有时他会遇到帧速率的滞后.好像10个或更多帧被丢弃.

运行循环函数由CADisplayLink调用.

有没有办法以编程方式判断帧速率是否滞后?我只是测量运行循环函数中的时间,然后检查它是否比预期的要大.如果是,请记住存在滞后.

可以在旅途中在各种设备上进行测试.如果没有连接到Xcode,你将如何跟踪它?

performance opengl-es ios opengl-es-2.0

2
推荐指数
1
解决办法
1623
查看次数

使用递归在Java中以正确格式打印菱形图案

我的程序从文件中读取值,并使用递归方法根据这些值打印星号模式.我只是在让一切正常排队时遇到问题.

输出应该如下所示:

    *
  *   *
*   *   *
  *   *  
    *
Run Code Online (Sandbox Code Playgroud)

关于输出的格式,方向是:

"请注意,图案围绕中心线对称(垂直)对齐.图案应在每条线(水平)上对称排列,并提示:使用线值来帮助空间."

但我的输出看起来像这样:

*
*  *
*  *  *
*  *
*
Run Code Online (Sandbox Code Playgroud)

我用来获取这种模式的代码:

public static void makePattern(int thisRow, int num) {
    if(thisRow >= num) {
        for(int i = 0; i < num; i++) {
            System.out.print("  " + "*" + "  ");
        }
        System.out.println();

    }
    else {
        for(int i = 0; i < thisRow; i++) {
            System.out.print("  " + "*" + "  ");
        }
        System.out.println();

        makePattern(thisRow + 1, num);

        for(int …
Run Code Online (Sandbox Code Playgroud)

java formatting recursion

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