allocatedirect用glDrawElements时怎么计算纹理坐标????
allocatedirect 时间:2021-06-08 阅读:(
)
C#像有java中的ByteBuffer这样的类吗?
在HeapByteBuffer中,每个存储单元都是一个byte,byte是大多数计算机中最基本的数据单元。
ByteBuffer的构造器允许以一个特定的容量构造ByteBuffer对象,也可以从一个已存在的byte数组对象上构建ByteBuffer对象。
ByteBuffer.allocate用于设置一个新的capacity,而ByteBuffer.warp方法则是使用一个byte数组对象取代当前的byte数组对象。
ByteBuffer.allocateDirect方法也是设置一个新的capacity,但在此之前它会销毁掉已经存在的ByteHeapBuffer对象,重新建立DirectByteBuffer
对象,经过查看源代码,可以得知DirectByteBuffer是没有安全检测能力的,也就是说它是分配在非托管内存空间里的,所以ByteDirectBuffer缓冲区可能无法捕获诸如溢出,数据类型错误等等异常,它也不受垃圾回收的管理,而是使用类似于C++的显式内存释放,但可以肯定的是,ByteDirectBuffer的速度要快的多。
由于DirectByteBuffer也是Buffer的子类,所以ByteBuffer是无法分辨出来它和ByteHeapBuffer的区别的,操作方法都是完全相同的。
除了将ByteBuffer对象转变成诸如DoubleBuffer对象外,ByteBuffer对象本身也可以直接返回各种数据类型,例如使用ByteBuffer.getInt方法就可以返回Integer类型的数据。
ByteBuffer.order方法用于获取和设置当前数据的字节顺序,包括大头数据,小头数据等,由于数据跨越多种主机传送,而每一种机器表示数据的方式不同,所以做一些转换是必要的。
Java使用ByteOrder类处理字节顺序,ByteOrder.nativeOrder就可以得到当前JVM确定的字节顺序。
你好,我想写一个java服务器端程序,当客户端给出一个请求,就会访问数据库中的内容,并且返回!
public class ServerConnect {
private static final int BUF_SIZE = 1024;
private static final int PORT = 8080;
private static final int TIMEOUT = 3000;
public static void main(String[] args) {
selector();
}
public static void ept(SelectionKey key) throws IOException {
ServerSocketChannel ssChannel = (ServerSocketChannel) key.channel();
SocketChannel sc = ept();
sc.configureBlocking(false);
sc.register(key.selector(), SelectionKey.OP_READ,
ByteBuffer.allocateDirect(BUF_SIZE));
}
public static void handleRead(SelectionKey key) throws IOException {
SocketChannel sc = (SocketChannel) key.channel();
ByteBuffer buf = (ByteBuffer) key.attachment();
long bytesRead = sc.read(buf);
while (bytesRead > 0) {
buf.flip();
while (buf.hasRemaining()) {
byte b= buf.get();
System.out.print((char) buf.get());
}
System.out.println();
buf.clear();
bytesRead = sc.read(buf);
}
if (bytesRead == -1) {
sc.close();
}
}
public static void handleWrite(SelectionKey key) throws IOException {
ByteBuffer buf = (ByteBuffer) key.attachment();
buf.flip();
SocketChannel sc = (SocketChannel) key.channel();
while (buf.hasRemaining()) {
sc.write(buf);
}
pact();
}
public static void selector() {
Selector selector = null;
ServerSocketChannel ssc = null;
try {
selector = Selector.open();
ssc = ServerSocketChannel.open();
ssc.socket().bind(new SocketAddress(PORT));
ssc.configureBlocking(false);
ssc.register(selector, SelectionKey.OP_ACCEPT);
while (true) {
if (selector.select(TIMEOUT) == 0) {
System.out.println("==");
continue;
}
Iterator iter = selector.selectedKeys()
.iterator();
int count = 0;
while (iter.hasNext()) {
count++;
SelectionKey key = iter.next();
if (eptable()) {
ept(key);
}
if (key.isReadable()) {
handleRead(key);
}
if (key.isWritable() && key.isValid()) {
handleWrite(key);
}
if (key.isConnectable()) {
System.out.println("isConnectable = true");
}
iter.remove();
}
System.out.println(count);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (selector != null) {
selector.close();
}
if (ssc != null) {
ssc.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
不知道客户端的请求是什么形式的请求socket?webservice?http?
你这个这是用nio写的一个socket服务端程序,监听的是本地8080端口,在handleWrite方法体类处理jdbc获取数据放入ByteBuffer里就可以了,jdbc操作这里就不写了。
把d盘的文件拷贝到E盘用java语言怎么编程
下面这两个方法可以
public static boolean copyFile(String srcFileName, String destFileName,boolean overlay);
public static boolean copyDirectory(String srcDirName, String destDirName,boolean overlay) ;Java 的 DirectBuffer 是什么东西?
DirectByteBuffer 类有一个内部的静态类 Deallocator,这个类实现了 Runnable 接口并在 run() 方法内释放了内存:?View CodeJAVA unsafe.freeMemory(address); 那这个 Deallocator 线程是哪里调用了呢?这里就用到了 Java 的虚引用(PhantomReference),Java 虚引用允许对象被回收之前做一些清理工作。
在 DirectByteBuffer 的构造方法中创建了一个 Cleaner:?View CodeJAVA cleaner = Cleaner.create(this , new Deallocator(address, cap) ); 而Cleaner 类继承了 PhantomReference 类,并且在自己的 clean() 方法中启动了清理线程,当 DirectByteBuffer 被 GC 之前 cleaner 对象会被放入一个引用队列(ReferenceQueue),JVM 会启动一个低优先级线程扫描这个队列,并且执行 Cleaner 的 clean 方法来做清理工作。
OK,DirectByteBuffer 的实现大概搞清楚了,那我们是否该在自己的代码中使用 DirectByteBuffer 呢?我个人认为可以适当的使用,使用直接内存确实避免了 GC 问题和内存拷贝的问题,但是我们不得不考虑两个问题:1)操作系统可能会把 DirectByteBuffer 的内存交换到磁盘上,这样势必会影响性能,为了避免这个问题我们不得不对操作系统做相应的配置;2)DirectByteBuffer 申请内存失败会直接抛出 OutOfMemoryError,对于这种情况,还是要想办法处理。
用glDrawElements时怎么计算纹理坐标????
我可以private int[] texCoordelement = { one,one,0,0,one,0,0,one, one,one,0,0,one,0,0,one, one,one,0,0,one,0,0,one, one,one,0,0,one,0,0,one, one,one,0,0,one,0,0,one, one,one,0,0,one,0,0,one, };改成6X6的二维数组,每次用glTexCoordPointer设进去,但问题是怎么通过private byte[][] indices = { new byte[]{0, 4, 5, 0, 5, 1,}, new byte[]{1, 5, 6, 1, 6, 2,}, new byte[]{2, 6, 7, 2, 7, 3,}, new byte[]{3, 7, 4, 3, 4, 0,}, new byte[]{4, 7, 6, 4, 6, 5,}, new byte[]{3, 0, 1, 3, 1, 2,}, };来确定6X6的纹理坐标,比如4--------5| |0--------1这是正方体的底面顶点序号,怎么确定其纹理坐标呢???
sparkedhost怎么样?sparkedhost主机。Sparkedhost于2017年7月注册在美国康涅狄格州,2018年收购了ClynexHost,2019年8月从Taltum Solutions SL收购了The Beast Hosting,同年10月从Reilly Bauer收购了OptNode Hosting。sparkedhost当前的业务主要为:为游戏“我的世界”提供服务器、虚拟...
官方网站:点击访问酷番云官网活动方案:优惠方案一(限时秒杀专场)有需要海外的可以看看,比较划算29月,建议年付划算,月付续费不同价,这个专区。国内节点可以看看,性能高IO为主, 比较少见。平常一般就100IO 左右。优惠方案二(高防专场)高防专区主要以高防为主,节点有宿迁,绍兴,成都,宁波等,节点挺多,都支持防火墙自助控制。续费同价以下专场。 优惠方案三(精选物理机)西南地区节点比较划算,赠送5...
wordpress公司网站模板,wordpresss简洁风格的高级通用自适应网站效果,完美自适应支持多终端移动屏幕设备功能,高级可视化后台自定义管理模块+规范高效的搜索优化。wordpress公司网站模板采用标准的HTML5+CSS3语言开发,兼容当下的各种主流浏览器: IE 6+(以及类似360、遨游等基于IE内核的)、Firefox、Google Chrome、Safari、Opera等;同时...
allocatedirect为你推荐
donghang东航的舱位分类?iso20000认证什么是ISO20000-IT服务管理体系企业资源管理系统企业管理系统都有什么功能virusscan为什么解压文件显示VirusScan 警报!不能解压!怎么回事怎么解决高手来oa办公系统下载oa办公软件哪里可以下载?网络审计什么叫网络会计师事务所网络电话永久免费打有没有永久免费打电话的网络电话啊?assemblyinfoasp.net这几个文件是干什么的?印度尼西亚国家代码国际代码腾讯技术腾讯简介----
北京主机租用 免费域名解析 万网域名解析 免费申请域名 wordpress主机 主机评测 directspace 优惠码 哈喽图床 tk域名 论坛空间 100m空间 789电视 135邮箱 可外链相册 佛山高防服务器 卡巴斯基破解版 卡巴斯基免费试用版 华为云服务登录 512mb 更多