Проблема в том, что аннотации вашего типа отбрасывают информацию:
val mVShader : VertexShader = new MyVertexShader
Вы только что сказали, что это VertexShader
- но по порядку
чтобы перейти MyVertex
к его методу затенения, вам нужно быть более
конкретно:
val mVShader : VertexShader {type V = MyVertex} = new MyVertexShader
Самое простое и краткое исправление - удалить аннотации типов:
val mVShader = new MyVertexShader
val mV0 = new MyVertex(1.0f, 9.0f)
В ответ на ваш комментарий:
Если у вас есть
trait Mesh {
trait T <: Vertex
def getVertex: T
}
и
class AMash extends Mesh { ... }
Вы можете получить конкретный T
для AMesh
как
AMesh#T
и для конкретного AMash
объекта как
val amesh: AMesh = ...
... amesh.T ...
, хотя последний является хитрой вещью, которая не всегда работает или требует зависимых типов методов .