【OpenGL】OpenGL EW的适用于VB的glew32vb.dll
OpenGL EW是一个跨平台开源的OpenGL扩展库,提供了高效的运行时机制来判断运行平台是否支持某些OpenGL扩展。使用OpenGL EW能让你在Windows下使用高版本的OpenGL,绕过了DX的模拟层,直接使用显卡驱动提供的函数,具有更高的性能。
https://www.opengl.org/sdk/libs/GLEW/
OpenGL EW源码下载:
Dll、链接库、头文件下载:
如果要使用OpenGL EW,请把lib放到你的开发环境的lib文件夹(有32位和64位版本),然后把头文件放到你的开发环境的include文件夹的gl文件夹(如果是Mac,是opengl文件夹)。
然后在你的源码加上#include<GL/glew.h>就行了。切记前面不能包含<GL/gl.h>。
由于原始的glew32.dll导出的符号都指向函数指针,而VB则不能直接调用函数指针,如果你直接Declare Function...会出现Access Violation。因此我专门给VB写了它专用的DLL,叫“glew32vb.dll”
编写的过程倒是挺简单,用exeScope看glew32.dll看它的导出表,然后用Notepad++的块编辑制作了DEF文件。
最后借助查找替换做了一个asm文件,每个符号都是一句mov和一句jmp
虽然有一万多行代码,但是其实它完全是用自动的方式产生的(除了我拉了几下鼠标、按了几次Ctrl+C和Ctrl+V等各种操作以外。。)。
使用NASM编译,VC6的Link完成链接。
现在OpenGL EW的VB库已经可以离开原始的glew32.dll了,因为我给它使用了静态库glew32s.lib,这样你就不需要让glew32.dll和glew32vb.dll一起出现在你的程序文件夹了。
新的静态OpenGL EW for VB可以在这里下载。
BIN:
SRC:
有了它,你就可以用VB玩很高版本的OpenGL了。
咦?glew32vb.dll的导入表好像很简单,就是opengl.dll的三个函数:wglGetCurrentDC
wglGetProcAddress
glGetString明白了,原来它就是用这三个函数实现的,怪不得能取得显卡导出的函数呢,而且都是函数指针。 已经更新了链接,解决了BUG。
正准备做tlb 先来看看,感觉是救命稻草啊 收藏先慢慢消化 收藏先慢慢消化收藏先慢慢消化 谢谢高手分享,vb的代码怎么写呢?
页:
[1]