MPSPolygonBuffer

Struct MPSPolygonBuffer 

Source
pub struct MPSPolygonBuffer { /* private fields */ }
๐Ÿ‘ŽDeprecated
Available on crate feature MPSPolygonBuffer only.
Expand description

A vertex buffer and optional index and mask buffer for a set of polygons

See also Appleโ€™s documentation

Implementationsยง

Sourceยง

impl MPSPolygonBuffer

Source

pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>

๐Ÿ‘ŽDeprecated
Available on crate feature MPSRayIntersector only.

Initialize the polygon buffer

Source

pub unsafe fn initWithCoder( this: Allocated<Self>, a_decoder: &NSCoder, ) -> Option<Retained<Self>>

๐Ÿ‘ŽDeprecated
Available on crate feature MPSRayIntersector only.

Initialize the polygon buffer with an NSCoder. Buffer properties such as the vertex buffer, instance buffer, etc. are set to nil. Encode and decode these buffers along with the polygon buffer instead.

ยงSafety

a_decoder possibly has further requirements.

Source

pub unsafe fn polygonBuffer() -> Retained<Self>

๐Ÿ‘ŽDeprecated
Available on crate feature MPSRayIntersector only.
Source

pub unsafe fn copyWithZone(&self, zone: *mut NSZone) -> Retained<Self>

๐Ÿ‘ŽDeprecated
Available on crate feature MPSRayIntersector only.

Create a a copy of this polygon buffer

Buffer properties of the polygon buffer such as the vertex buffer, instance, buffer, etc. are set to nil. Copy these buffers and assign them to the new polygon buffer or reassign the existing buffers to the new polygon buffer.

Parameter zone: This parameter is ignored. Memory zones are no longer used by Objective-C.

ยงSafety

zone must be a valid pointer or null.

Source

pub unsafe fn vertexBuffer( &self, ) -> Option<Retained<ProtocolObject<dyn MTLBuffer>>>

๐Ÿ‘ŽDeprecated
Available on crate feature MPSRayIntersector only.

Vertex buffer containing vertex data encoded as three 32 bit floats per vertex. Note that by default each vertex is aligned to the alignment of the vector_float3 type: 16 bytes. This can be changed using the vertexStride property. A vertex buffer must be provided before the acceleration structure is built.

When using triangle polygons, degenerate (zero or negative area) triangles are ignored during acceleration structure construction. This can be used to pad triangle indices if needed.

Quadrilateral polygons are internally treated as two triangles. If the quadrilateral has vertices v0, v1, v2, and v3, the two triangles will have vertices v0, v1, v2 and v0, v2, v3. A quadrilateral may be used to represent a triangle by repeating the last vertex. If the first triangle is degenerate (zero or negative area), the entire quadrilateral will be ignored. This can be used to pad quadrilateral indices if needed. All four vertices of a quadrilateral must be coplanar and the quadrilateral must be convex.

Source

pub unsafe fn setVertexBuffer( &self, vertex_buffer: Option<&ProtocolObject<dyn MTLBuffer>>, )

๐Ÿ‘ŽDeprecated
Available on crate feature MPSRayIntersector only.

Setter for vertexBuffer.

ยงSafety
  • vertex_buffer may need to be synchronized.
  • vertex_buffer may be unretained, you must ensure it is kept alive while in use.
  • vertex_buffer contents should be of the correct type.
Source

pub unsafe fn vertexBufferOffset(&self) -> NSUInteger

๐Ÿ‘ŽDeprecated
Available on crate feature MPSRayIntersector only.

Offset, in bytes, into the vertex buffer. Defaults to 0 bytes. Must be aligned to 4 bytes.

Source

pub unsafe fn setVertexBufferOffset(&self, vertex_buffer_offset: NSUInteger)

๐Ÿ‘ŽDeprecated
Available on crate feature MPSRayIntersector only.

Setter for vertexBufferOffset.

Source

pub unsafe fn indexBuffer( &self, ) -> Option<Retained<ProtocolObject<dyn MTLBuffer>>>

๐Ÿ‘ŽDeprecated
Available on crate feature MPSRayIntersector only.

Index buffer containing index data. Each index references a vertex in the vertex buffer. May be nil.

Source

pub unsafe fn setIndexBuffer( &self, index_buffer: Option<&ProtocolObject<dyn MTLBuffer>>, )

๐Ÿ‘ŽDeprecated
Available on crate feature MPSRayIntersector only.

Setter for indexBuffer.

ยงSafety
  • index_buffer may need to be synchronized.
  • index_buffer may be unretained, you must ensure it is kept alive while in use.
  • index_buffer contents should be of the correct type.
Source

pub unsafe fn indexBufferOffset(&self) -> NSUInteger

๐Ÿ‘ŽDeprecated
Available on crate feature MPSRayIntersector only.

Offset, in bytes, into the index buffer. Defaults to 0 bytes. Must be aligned to a multiple of the index type. Changes to this property require rebuilding the acceleration structure.

Source

pub unsafe fn setIndexBufferOffset(&self, index_buffer_offset: NSUInteger)

๐Ÿ‘ŽDeprecated
Available on crate feature MPSRayIntersector only.

Setter for indexBufferOffset.

Source

pub unsafe fn maskBuffer( &self, ) -> Option<Retained<ProtocolObject<dyn MTLBuffer>>>

๐Ÿ‘ŽDeprecated
Available on crate feature MPSRayIntersector only.

Mask buffer containing one uint32_t mask per polygon. May be nil. Otherwise, the mask type must be specified on the MPSRayIntersector with which it is used.

Source

pub unsafe fn setMaskBuffer( &self, mask_buffer: Option<&ProtocolObject<dyn MTLBuffer>>, )

๐Ÿ‘ŽDeprecated
Available on crate feature MPSRayIntersector only.

Setter for maskBuffer.

ยงSafety
  • mask_buffer may need to be synchronized.
  • mask_buffer may be unretained, you must ensure it is kept alive while in use.
  • mask_buffer contents should be of the correct type.
Source

pub unsafe fn maskBufferOffset(&self) -> NSUInteger

๐Ÿ‘ŽDeprecated
Available on crate feature MPSRayIntersector only.

Offset, in bytes, into the mask buffer. Defaults to 0 bytes. Must be aligned to 4 bytes.

Source

pub unsafe fn setMaskBufferOffset(&self, mask_buffer_offset: NSUInteger)

๐Ÿ‘ŽDeprecated
Available on crate feature MPSRayIntersector only.

Setter for maskBufferOffset.

Source

pub unsafe fn polygonCount(&self) -> NSUInteger

๐Ÿ‘ŽDeprecated
Available on crate feature MPSRayIntersector only.

Number of polygons. Changes to this property require rebuilding the acceleration structure.

Source

pub unsafe fn setPolygonCount(&self, polygon_count: NSUInteger)

๐Ÿ‘ŽDeprecated
Available on crate feature MPSRayIntersector only.

Setter for polygonCount.

Sourceยง

impl MPSPolygonBuffer

Methods declared on superclass NSObject.

Source

pub unsafe fn new() -> Retained<Self>

Available on crate feature MPSRayIntersector only.

Methods from Deref<Target = NSObject>ยง

Source

pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !

Handle messages the object doesnโ€™t recognize.

See Appleโ€™s documentation for details.

Methods from Deref<Target = AnyObject>ยง

Source

pub fn class(&self) -> &'static AnyClass

Dynamically find the class of this object.

ยงPanics

May panic if the object is invalid (which may be the case for objects returned from unavailable init/new methods).

ยงExample

Check that an instance of NSObject has the precise class NSObject.

use objc2::ClassType;
use objc2::runtime::NSObject;

let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());
Source

pub unsafe fn get_ivar<T>(&self, name: &str) -> &T
where T: Encode,

๐Ÿ‘ŽDeprecated: this is difficult to use correctly, use Ivar::load instead.

Use Ivar::load instead.

ยงSafety

The object must have an instance variable with the given name, and it must be of type T.

See Ivar::load_ptr for details surrounding this.

Source

pub fn downcast_ref<T>(&self) -> Option<&T>
where T: DowncastTarget,

Attempt to downcast the object to a class of type T.

This is the reference-variant. Use Retained::downcast if you want to convert a retained object to another type.

ยงMutable classes

Some classes have immutable and mutable variants, such as NSString and NSMutableString.

When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable โ€œunder the hoodโ€.

So using this method to convert a NSString to a NSMutableString, while not unsound, is generally frowned upon unless you created the string yourself, or the API explicitly documents the string to be mutable.

See Appleโ€™s documentation on mutability and on isKindOfClass: for more details.

ยงGeneric classes

Objective-C generics are called โ€œlightweight genericsโ€, and thatโ€™s because they arenโ€™t exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.

You can, however, safely downcast to generic collections where all the type-parameters are AnyObject.

ยงPanics

This works internally by calling isKindOfClass:. That means that the object must have the instance method of that name, and an exception will be thrown (if CoreFoundation is linked) or the process will abort if that is not the case. In the vast majority of cases, you donโ€™t need to worry about this, since both root objects NSObject and NSProxy implement this method.

ยงExamples

Cast an NSString back and forth from NSObject.

use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};

let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();

Try (and fail) to cast an NSObject to an NSString.

use objc2_foundation::{NSObject, NSString};

let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());

Try to cast to an array of strings.

โ“˜
use objc2_foundation::{NSArray, NSObject, NSString};

let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();

This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.

Downcast when processing each element instead.

use objc2_foundation::{NSArray, NSObject, NSString};

let arr = NSArray::from_retained_slice(&[NSObject::new()]);

for elem in arr {
    if let Some(data) = elem.downcast_ref::<NSString>() {
        // handle `data`
    }
}

Trait Implementationsยง

Sourceยง

impl AsRef<AnyObject> for MPSPolygonBuffer

Available on crate feature MPSRayIntersector only.
Sourceยง

fn as_ref(&self) -> &AnyObject

Converts this type into a shared reference of the (usually inferred) input type.
Sourceยง

impl AsRef<MPSPolygonBuffer> for MPSPolygonBuffer

Available on crate feature MPSRayIntersector only.
Sourceยง

fn as_ref(&self) -> &Self

Converts this type into a shared reference of the (usually inferred) input type.
Sourceยง

impl AsRef<NSObject> for MPSPolygonBuffer

Available on crate feature MPSRayIntersector only.
Sourceยง

fn as_ref(&self) -> &NSObject

Converts this type into a shared reference of the (usually inferred) input type.
Sourceยง

impl Borrow<AnyObject> for MPSPolygonBuffer

Available on crate feature MPSRayIntersector only.
Sourceยง

fn borrow(&self) -> &AnyObject

Immutably borrows from an owned value. Read more
Sourceยง

impl Borrow<NSObject> for MPSPolygonBuffer

Available on crate feature MPSRayIntersector only.
Sourceยง

fn borrow(&self) -> &NSObject

Immutably borrows from an owned value. Read more
Sourceยง

impl ClassType for MPSPolygonBuffer

Available on crate feature MPSRayIntersector only.
Sourceยง

const NAME: &'static str = "MPSPolygonBuffer"

The name of the Objective-C class that this type represents. Read more
Sourceยง

type Super = NSObject

The superclass of this class. Read more
Sourceยง

type ThreadKind = <<MPSPolygonBuffer as ClassType>::Super as ClassType>::ThreadKind

Whether the type can be used from any thread, or from only the main thread. Read more
Sourceยง

fn class() -> &'static AnyClass

Get a reference to the Objective-C class that this type represents. Read more
Sourceยง

fn as_super(&self) -> &Self::Super

Get an immutable reference to the superclass.
Sourceยง

impl CopyingHelper for MPSPolygonBuffer

Available on crate feature MPSRayIntersector only.
Sourceยง

type Result = MPSPolygonBuffer

The immutable counterpart of the type, or Self if the type has no immutable counterpart. Read more
Sourceยง

impl Debug for MPSPolygonBuffer

Available on crate feature MPSRayIntersector only.
Sourceยง

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Sourceยง

impl Deref for MPSPolygonBuffer

Available on crate feature MPSRayIntersector only.
Sourceยง

type Target = NSObject

The resulting type after dereferencing.
Sourceยง

fn deref(&self) -> &Self::Target

Dereferences the value.
Sourceยง

impl Hash for MPSPolygonBuffer

Available on crate feature MPSRayIntersector only.
Sourceยง

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 ยท Sourceยง

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Sourceยง

impl Message for MPSPolygonBuffer

Available on crate feature MPSRayIntersector only.
Sourceยง

fn retain(&self) -> Retained<Self>
where Self: Sized,

Increment the reference count of the receiver. Read more
Sourceยง

impl NSCoding for MPSPolygonBuffer

Available on crate feature MPSRayIntersector only.
Sourceยง

unsafe fn encodeWithCoder(&self, coder: &NSCoder)
where Self: Sized + Message,

Safety Read more
Sourceยง

unsafe fn initWithCoder( this: Allocated<Self>, coder: &NSCoder, ) -> Option<Retained<Self>>
where Self: Sized + Message,

Safety Read more
Sourceยง

impl NSCopying for MPSPolygonBuffer

Available on crate feature MPSRayIntersector only.
Sourceยง

fn copy(&self) -> Retained<Self::Result>
where Self: Sized + Message + CopyingHelper,

Returns a new instance thatโ€™s a copy of the receiver. Read more
Sourceยง

unsafe fn copyWithZone(&self, zone: *mut NSZone) -> Retained<Self::Result>
where Self: Sized + Message + CopyingHelper,

Returns a new instance thatโ€™s a copy of the receiver. Read more
Sourceยง

impl NSObjectProtocol for MPSPolygonBuffer

Available on crate feature MPSRayIntersector only.
Sourceยง

fn isEqual(&self, other: Option<&AnyObject>) -> bool
where Self: Sized + Message,

Check whether the object is equal to an arbitrary other object. Read more
Sourceยง

fn hash(&self) -> usize
where Self: Sized + Message,

An integer that can be used as a table address in a hash table structure. Read more
Sourceยง

fn isKindOfClass(&self, cls: &AnyClass) -> bool
where Self: Sized + Message,

Check if the object is an instance of the class, or one of its subclasses. Read more
Sourceยง

fn is_kind_of<T>(&self) -> bool
where T: ClassType, Self: Sized + Message,

๐Ÿ‘ŽDeprecated: use isKindOfClass directly, or cast your objects with AnyObject::downcast_ref
Check if the object is an instance of the class type, or one of its subclasses. Read more
Sourceยง

fn isMemberOfClass(&self, cls: &AnyClass) -> bool
where Self: Sized + Message,

Check if the object is an instance of a specific class, without checking subclasses. Read more
Sourceยง

fn respondsToSelector(&self, aSelector: Sel) -> bool
where Self: Sized + Message,

Check whether the object implements or inherits a method with the given selector. Read more
Sourceยง

fn conformsToProtocol(&self, aProtocol: &AnyProtocol) -> bool
where Self: Sized + Message,

Check whether the object conforms to a given protocol. Read more
Sourceยง

fn description(&self) -> Retained<NSObject>
where Self: Sized + Message,

A textual representation of the object. Read more
Sourceยง

fn debugDescription(&self) -> Retained<NSObject>
where Self: Sized + Message,

A textual representation of the object to use when debugging. Read more
Sourceยง

fn isProxy(&self) -> bool
where Self: Sized + Message,

Check whether the receiver is a subclass of the NSProxy root class instead of the usual NSObject. Read more
Sourceยง

fn retainCount(&self) -> usize
where Self: Sized + Message,

The reference count of the object. Read more
Sourceยง

impl NSSecureCoding for MPSPolygonBuffer

Available on crate feature MPSRayIntersector only.
Sourceยง

impl PartialEq for MPSPolygonBuffer

Available on crate feature MPSRayIntersector only.
Sourceยง

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 ยท Sourceยง

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Sourceยง

impl RefEncode for MPSPolygonBuffer

Available on crate feature MPSRayIntersector only.
Sourceยง

const ENCODING_REF: Encoding = <NSObject as ::objc2::RefEncode>::ENCODING_REF

The Objective-C type-encoding for a reference of this type. Read more
Sourceยง

impl DowncastTarget for MPSPolygonBuffer

Available on crate feature MPSRayIntersector only.
Sourceยง

impl Eq for MPSPolygonBuffer

Available on crate feature MPSRayIntersector only.

Auto Trait Implementationsยง

Blanket Implementationsยง

Sourceยง

impl<T> Any for T
where T: 'static + ?Sized,

Sourceยง

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Sourceยง

impl<'a, T> AnyThread for T
where T: ClassType<ThreadKind = dyn AnyThread + 'a> + ?Sized,

Sourceยง

fn alloc() -> Allocated<Self>
where Self: Sized + ClassType,

Allocate a new instance of the class. Read more
Sourceยง

impl<T> Borrow<T> for T
where T: ?Sized,

Sourceยง

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Sourceยง

impl<T> BorrowMut<T> for T
where T: ?Sized,

Sourceยง

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Sourceยง

impl<T> From<T> for T

Sourceยง

fn from(t: T) -> T

Returns the argument unchanged.

Sourceยง

impl<T, U> Into<U> for T
where U: From<T>,

Sourceยง

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Sourceยง

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Sourceยง

type Target = T

๐Ÿ”ฌThis is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Sourceยง

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Sourceยง

type Error = Infallible

The type returned in the event of a conversion error.
Sourceยง

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Sourceยง

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Sourceยง

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Sourceยง

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Sourceยง

impl<T> AutoreleaseSafe for T
where T: ?Sized,