Code Monkey home page Code Monkey logo

d-metal-binding's Issues

Type 'Expression' not implemented: 'class'

Compiling on macOS ARM64 with LDC 1.32.0 yields this error:
d-metal-binding/source/objc/runtime.d(10,12): Error: Internal compiler error: Type 'Expression' not implemented: 'class'
Possibly a compiler bug?

The hello_triangle example doesn't produce an executable

Although it does compile and produces a static binary, I'm not really sure how to use the hello_triangle example, or what the main() function I need to write to use it would look like. I've written the equivalent in Objective-C, but that uses NSApplication, NSWindow etc which aren't included in this binding. Can this be documented or added to the examples?

Thank you!

_objc_msgSend_stret is undefined

When compiling the following small example, linking to SDL2 and d-metal-binding, a linker error is thrown that _objc_msgSend_stret is undefined.

import std.stdio;
import std.exception;
import bindbc.sdl;
import metal;
import objc.runtime;
import objc.meta;

void main() {

 // Init SDL2
 auto load = loadSDL();
 enforce(load != SDLSupport.noLibrary, "SDL2 not found!");
 SDL_Init(SDL_INIT_VIDEO);

 SDL_Window* window = SDL_CreateWindow("Metal Test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_METAL | SDL_WINDOW_ALLOW_HIGHDPI);
 SDL_MetalView view = SDL_Metal_CreateView(window);
 CAMetalLayer layer = cast(CAMetalLayer)SDL_Metal_GetLayer(view);
 writeln(layer.drawableSize());
 

 writeln("Edit source/app.d to start your project.");
}

Relevant output from dub

ld: Undefined symbols:
  _objc_msgSend_stret, referenced from:
      CAMetalLayer::drawableSize() in libmetal.a[12](objc.metal_gen.o)
clang: error: linker command failed with exit code 1 (use -v to see invocation)

A lot of the MTL API is missing alloc/init/release declarations.

A large part of the API has no way to release references to the classes created, this in my testing can result in some memory leaks.
A lower class than Object should probably be added, which provides just an interface to retain, release, autorelease and retainCount

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.