ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 6505|回复: 19

[讨论] vb中安装调用opengl(转载)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-2-5 13:56 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
OpenGL(全写Open Graphics Library)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。
OpenGL 是行业领域中最为广泛接纳的 2D/3D 图形 API,其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。OpenGL 是独立于视窗操作系统或其它操作系统的,亦是网络透明的。在包含CAD、内容创作、能源、娱乐、游戏开发、制造业、制药业及虚拟现实等行业领域中,OpenGL 帮助程序员实现在 PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。

下面是我从网上找来的内容,附件仅适用于opengl—1.2版本。
见vb中安装调用opengl https://zhidao.baidu.com/question/536207478.html
1、先下载 vbogl.tlb,放在"C:\Windows\System32\"下,注意vbogl.tlb与 glut32.dll等文件位于同一个文件夹。

2、注册。运行:regsvr32 "C:\Windows\System32\vbogl.tlb"。在VB“工程”-“引用”中就可以使用 VB Opengl API 1.2了。
测试代码:
  1. Private Sub Form_Resize()
  2.     InvalidateRect Form1.hWnd, 0, 1 '
  3.     UpdateWindow Form1.hWnd '
  4. End Sub

  5. Function glInit(hWnd As Long)

  6.     Dim pdf As PIXELFORMATDESCRIPTOR  'addr = VarPtr(pfd)
  7.     Id = DescribePixelFormat(Form1.hDC, 1, 40, pdf) '
  8.     pdf.dwFlags = pdf.dwFlags + PFD_DOUBLEBUFFER
  9.     Id = ChoosePixelFormat(Form1.hDC, pdf) '
  10.     SetPixelFormat Form1.hDC, Id, pdf '
  11.     g_hRC = wglCreateContext(Form1.hDC) '
  12.     wglMakeCurrent Form1.hDC, g_hRC '
  13.     w = Form1.Width * 0.067: h = Form1.Height * 0.067 ' px
  14.     glViewport 0, 0, w, h
  15.     glMatrixMode mmProjection
  16.     glLoadIdentity
  17.     gluPerspective 60#, w / h, 1.5, 2000#
  18.     glMatrixMode mmModelView
  19.     gluLookAt 10, 5, 10, 0, 0, 0, 0, 1, 0

  20. End Function

  21. Private Sub Form_Paint()
  22.     glClearColor 0, 0, 1, 1 ' 必须在 glClear之前glClear clrColorBufferBit
  23.     glColor3f 1, 1, 1
  24.     glPointSize 15
  25.     glBegin bmPoints
  26.     glVertex3f 0, 0, 0
  27.     glEnd
  28.      
  29.     SwapBuffers Form1.hDC '
  30. End Sub
复制代码

遗憾的是,现在的opengl都是2点几和3点几的版本了,因这个附件是1.2版本的,所以附件并不适用于现在的opengl版本了,要是vbogl.tlb有合适的版本就好了。
vb 与vba有很多相近的功能,要是vba也能调用opengl,那绘图方面就强大的多了。

VB6不用vbogl.tlb玩OpenGL(转载)https://www.0xaa55.com/thread-852-1-1.html
程序比较长,还不知道怎么使用。
我是抛砖引玉,哪位高手有这方面的经验的,欢迎介绍下。

vbogl.zip

187.01 KB, 下载次数: 71

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-2-8 16:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 dongdonggege 于 2018-3-2 08:18 编辑

成功了,我的第一个VB6.0-OpenGL程序!刚才无意中在工程-引用vbogl.tlb,终于能引用VB OpenGL API 1.2 (ANSI)成功。前几天在家中的机器出现模块注册不成功,引用也不成功,今天在幼儿园一样的系统,模块注册不成功,引用竟然成功了,欣喜若狂。在32位机上,我是把vbogl.tlb文件放到C:\Windows\System32里,在工具——引用,找到刚才的位置,可以调用。
在64位机上,我是把vbogl.tlb文件C:\Program Files (x86)\Microsoft Office\OFFICE11里,在工具——引用,找到刚才的位置,可以调用。
好像是我把glew.h和wglew.h放进了vc6\VC98\Include文件夹,两个dll文件放进了C:\Windows\System32文件夹。窗体代码:
  1. Private Declare Function GetForegroundWindow Lib "user32" () As Long
  2. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  3. Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long

  4. Dim hRC As Long '全局变量
  5. Private Sub CommandButton1_Click()
  6.     hwnd& = FindWindow(vbNullString, Me.Caption)
  7.     hdc& = GetDC(hwnd)
  8.     Call EnableOpenGL(hdc&)
  9.     Display
  10. End Sub

  11. Sub EnableOpenGL(ghDC As Long)
  12.     On Error GoTo Err
  13.     Dim pfd As PIXELFORMATDESCRIPTOR                'pfd像素格式设置.
  14.         ZeroMemory pfd, Len(pfd)
  15.         pfd.nSize = Len(pfd)                        '大小
  16.         pfd.nVersion = 1                            '版本
  17.         pfd.dwFlags = PFD_DRAW_TO_WINDOW Or PFD_SUPPORT_OPENGL Or PFD_DOUBLEBUFFER '标志
  18.         pfd.iPixelType = PFD_TYPE_RGBA              '像素类型
  19.         pfd.cColorBits = 24                         '颜色位数
  20.         pfd.cDepthBits = 32                         '位宽
  21.         pfd.iLayerType = PFD_MAIN_PLANE             '图层类型
  22.       
  23.         Dim PixFormat As Long
  24.         PixFormat = ChoosePixelFormat(ghDC, pfd)    '选择设备中最匹配我们所设置的像素
  25.         SetPixelFormat ghDC, PixFormat, pfd         '设置成当前的像素
  26.         hRC = wglCreateContext(ghDC)                '建立翻译描述表
  27.         wglMakeCurrent ghDC, hRC                    '将建立的翻译描述表设置为当前
  28.         Exit Sub
  29. Err:
  30.     MsgBox "Can't   create   OpenGL   context!", vbCritical, "Error"
  31.               End
  32. End Sub

  33. Private Sub Display()
  34.     hwnd& = FindWindow(vbNullString, Me.Caption)
  35.     hdc& = GetDC(hwnd)
  36.     glClearColor 0#, 0#, 1#, 0#   '清空颜色缓存的RGBA颜色值
  37.     glClear clrColorBufferBit     '为绘下帧曲面清除缓冲区
  38.     glColor3f 0.8, 0.3, 0.5       '设置显示的字体颜色
  39.    
  40.     glPushMatrix                  '依据当前模式(模式-视图矩阵)使矩阵入栈
  41.    
  42.     glBegin glBeginModeConstants.bmPolygon '开始绘图,绘制一个四边形
  43.         glVertex2f -0.5, -0.5     '四边形的4个顶点
  44.         glVertex2f -0.5, 0.5
  45.         glVertex2f 0.5, 0.5
  46.         glVertex2f 0.5, -0.5
  47.     glEnd
  48.     glPopMatrix                           '依据当前模式(模式-视图矩阵)使矩阵出栈
  49.     SwapBuffers hdc             '切换缓存
  50.       
  51. End Sub

  52. Sub DisableOpenGL()
  53.     wglMakeCurrent 0, 0
  54.     wglDeleteContext hRC
  55. End Sub
复制代码
glew-2.1.0-win32.zip文件太大,无法上传。

无标题.jpg

TA的精华主题

TA的得分主题

发表于 2018-2-9 16:36 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-2-7 16:22 | 显示全部楼层
glut32,今天想起来,说不定还需要这个文件上传,以备不测。
这个项目一直没有进展,3D一直做不出来。三年了,VB的,就是做不出来。

glut32.rar

74.17 KB, 下载次数: 24

TA的精华主题

TA的得分主题

发表于 2021-5-15 10:47 | 显示全部楼层
本帖最后由 lss001 于 2021-5-24 12:43 编辑
dongdonggege 发表于 2021-2-7 16:22
glut32,今天想起来,说不定还需要这个文件上传,以备不测。
这个项目一直没有进展,3D一直做不出来。三年 ...

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-15 16:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lss001 发表于 2021-5-15 10:47
附件解压后先注册glut.dll,glut32.dll
//打开excel 点击按钮即可注册
然后引用vbogl.tib

谢谢,你的2D3D图形,好像都偏到上面去了,不在中间。

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-15 17:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lss001 发表于 2021-5-15 10:47
附件解压后先注册glut.dll,glut32.dll
//打开excel 点击按钮即可注册
然后引用vbogl.tib

我的图是这样的,没有英文和汉语。
无标题1.jpg
无标题2.jpg

TA的精华主题

TA的得分主题

发表于 2021-5-16 08:06 | 显示全部楼层
本帖最后由 lss001 于 2021-5-16 09:09 编辑
dongdonggege 发表于 2021-5-15 17:05
我的图是这样的,没有英文和汉语。

显示器分辨率因素
2D视图矩阵glViewpore 第二参数150改小(即减小y轴,下同)
2D文字TextOut  第三参数100改大
3D视图矩阵glViewpore 第二参数150改小
3D文字glViewpore  第二参数100改小




TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-16 08:16 | 显示全部楼层
lss001 发表于 2021-5-16 08:06
显示器分辨率因素,视图矩阵y轴150改小即可!

汉字“中国”,一闪就没,你截图,我看看。

TA的精华主题

TA的得分主题

发表于 2021-5-16 08:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 lss001 于 2021-5-19 06:05 编辑
dongdonggege 发表于 2021-5-16 08:16
汉字“中国”,一闪就没,你截图,我看看。

、、、、、、、、、、、、、、、、、、、、、、、、、、、、
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 09:53 , Processed in 0.046325 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表