ecmascript-6 - twgl.js 使用 es6 模块加载纹理时遇到问题
问题描述
我正在尝试将纹理加载到 2d 平面中,如这篇文章How to draw 2D image with TWGL (WebGL helper Library)中演示的那样。
像这样包含脚本标签时效果很好<script src="https://twgljs.org/dist/twgl-full.min.js"></script>
但是,当尝试使用具有 es6 模块的完全相同的代码执行此操作时,我收到以下错误[.WebGL-0x7f90b084f000]RENDER WARNING: Render count or primcount is 0.
像这样使用 gulp 和 browserify
"dependencies": {
"animejs": "^3.2.1",
"twgl.js": "^4.16.1"
},
"devDependencies": {
"@barba/core": "^2.9.7",
"babel-core": "^6.26.3",
"babel-preset-env": "^1.7.0",
"babelify": "^8.0.0",
"browserify": "^17.0.0",
"gulp": "^3.9.1",
"gulp-autoprefixer": "^4.0.0",
"gulp-livereload": "^4.0.2",
"gulp-rename": "^2.0.0",
"gulp-sass": "^4.1.0",
"gulp-sourcemaps": "^2.6.5",
"tinyify": "^3.0.0",
"vinyl-buffer": "^1.0.1",
"vinyl-source-stream": "^2.0.0"
}
}
我的吞咽任务
gulp.task('js', function () {
const options = {
basedir: '.',
debug: !is_prod,
entries: [paths.listen.js + 'app.js'],
cache: {},
packageCache: {}
}
const b = browserify(options)
b.transform(babelify.configure({"presets": ["env"]}))
if(is_prod) b.plugin('tinyify', { flat: false })
b.bundle()
.on('error', swallowError)
.pipe(source('app.min.js'))
.pipe(gulp.dest(paths.output.js))
.pipe(livereload())
return b
})
导入import * as twgl from 'twgl.js'
难道我做错了什么 ?
解决方案
该示例使用的是 twgl 1.x,而您的 gulp 使用的是 4.x,情况发生了变化。特别是twgl.drawBufferInfo
从
twgl.drawBufferInfo(gl, primitiveType, bufferInfo)
至
twgl.drawBufferInfo(gl, bufferInfo, optionalPrimitiveType)
我编辑了这个答案以使用 4.x
推荐阅读
- azure-devops - 无法在远程服务器(VM)中为 Azure 发布管道安装代理(持续部署)
- javascript - “点击 1 获得 1,点击 2 获得 2”
- http - 如何充当中间人服务器在客户端和远程服务器之间添加 HTTP 标头?
- python - 反正有没有在正则表达式的搜索功能中使用变量?
- psql - 我怎样才能回滚 psql -f 命令?
- android - 如何在视图绑定中的活动中获取回收者视图当前项目文本值
- typescript - I'm getting a confusing legend in Highcharts (angular-highcharts)
- html - HTML 导航栏没有到顶部
- tableau-api - 如何根据表格中的客户类型为表格着色
- python - 是否可以使用脚本阻止 Windows APPS?