投稿者 JUNKOU  (社会人) 投稿日時 2009/11/28 02:33:07
YuO 様 と 魔界の仮面弁士 様 早速のご返信ありがとうございます。

下記'③では、CallCC のアドレスが渡ってないようです。
    '①と'② は正しく Public Sub glEndCB() へ行きます。
再度、申し訳ありませんが教えて下さい


Imports OpenGLLib
Imports System.Runtime.InteropServices

Public Class TessCall
    Public Sub glEndCB()
        glEnd()
    End Sub
End Class

Module DeclareB
    Public Delegate Sub CallCC() 'glEndCB()  'デリゲート 
End Module

Public Function TessMake(ByVal ListNo As IntegerAs Integer

        Dim tobj As Integer
        Dim MyCall As New TessCall
        Dim CallC As New CallCC(AddressOf MyCall.glEndCB)

        Dim returnValue3 As IntPtr

        returnValue3 = Marshal.GetFunctionPointerForDelegate(CallC)

        '① MainForm.Invoke(New CallCC(AddressOf MyCall.glEndCB)) 
        '② CallC() 
     
        tobj = gluNewTess()
        gluTessCallback(tobj, GLU_TESS_VERTEX, returnValue3) '③ 
                                              '~~~~~~~~~~~~ 
'尚、Imports OpenGLLib 内では 
Public Declare Sub gluTessCallback Lib "GLU32.DLL" (ByVal tess As IntPtr, _
                              ByVal which As UInt32, ByVal fn As IntPtr)
'です。 

 
VB.NET は理解するまでは、かなり時間が掛かりそうですね
  皆さんよろしくご教授をお願いします。