本文整理汇总了C++中crMemcpy函数的典型用法代码示例。如果您正苦于以下问题:C++ crMemcpy函数的具体用法?C++ crMemcpy怎么用?C++ crMemcpy使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了crMemcpy函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: crdlm_pointers_CompressedTexImage3DARB
int crdlm_pointers_CompressedTexImage3DARB(struct instanceCompressedTexImage3DARB *instance, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imagesize, const GLvoid *data)
{
unsigned int size = imagesize;
if (instance && size > 0) {
crMemcpy(instance->data, data, size);
}
return size;
}
示例2: crUnpackClipPlane
void crUnpackClipPlane(PCrUnpackerState pState)
{
GLdouble equation[4];
CHECK_BUFFER_SIZE_STATIC(pState, 4 + sizeof(equation));
GLenum plane = READ_DATA(pState, 0, GLenum );
crMemcpy( equation, DATA_POINTER(pState, 4, GLdouble ), sizeof(equation) );
pState->pDispatchTbl->ClipPlane( plane, equation );
INCR_DATA_PTR(pState, sizeof( GLenum ) + 4*sizeof( GLdouble ));
}
示例3: crStateBufferSubDataARB
void STATE_APIENTRY
crStateBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data)
{
CRContext *g = GetCurrentContext();
CRBufferObjectState *b = &g->bufferobject;
CRBufferObject *obj;
CRStateBits *sb = GetCurrentBits();
CRBufferObjectBits *bb = &sb->bufferobject;
FLUSH();
if (g->current.inBeginEnd) {
crStateError(__LINE__, __FILE__, GL_INVALID_OPERATION,
"glBufferSubDataARB called in begin/end");
return;
}
obj = crStateGetBoundBufferObject(target, b);
if (!obj)
{
crStateError(__LINE__, __FILE__, GL_INVALID_ENUM, "glBufferSubDataARB(target)");
return;
}
if (obj->id == 0) {
crStateError(__LINE__, __FILE__, GL_INVALID_OPERATION,
"glBufferSubDataARB");
return;
}
if (obj->pointer) {
crStateError(__LINE__, __FILE__, GL_INVALID_OPERATION,
"glBufferSubDataARB(buffer is mapped)");
return;
}
if (size < 0 || offset < 0 || (unsigned int)offset + size > obj->size) {
crStateError(__LINE__, __FILE__, GL_INVALID_OPERATION,
"glBufferSubDataARB(bad offset and/or size)");
return;
}
if (b->retainBufferData && obj->data) {
crMemcpy((char *) obj->data + offset, data, size);
}
DIRTY(bb->dirty, g->neg_bitid);
DIRTY(obj->dirty, g->neg_bitid);
/* grow dirty region */
if (offset + size > obj->dirtyStart + obj->dirtyLength)
obj->dirtyLength = offset + size;
if (offset < obj->dirtyStart)
obj->dirtyStart = offset;
}
示例4: crdlm_pointers_ZPixCR
int crdlm_pointers_ZPixCR( struct instanceZPixCR *instance, GLsizei width,
GLsizei height, GLenum format, GLenum type,
GLenum ztype, GLint zparm, GLint length,
const GLvoid *pixels, CRClientState *c)
{
unsigned int size = length;
if (instance && size > 0) {
crMemcpy(instance->pixels,pixels,length);
}
return size;
}
示例5: crPackCallListsSWAP
void PACK_APIENTRY crPackCallListsSWAP(GLint n, GLenum type,
const GLvoid *lists )
{
unsigned char *data_ptr;
int packet_length;
GLshort *shortPtr;
GLint *intPtr;
int i;
int bytesPerList = __gl_CallListsNumBytes( type );
int numBytes = bytesPerList * n;
if (numBytes < 0)
{
__PackError( __LINE__, __FILE__, GL_INVALID_ENUM,
"crPackCallLists(bad type)" );
return;
}
packet_length = sizeof( n ) +
sizeof( type ) +
numBytes;
data_ptr = (unsigned char *) crPackAlloc( packet_length );
WRITE_DATA( 0, GLint, SWAP32(n) );
WRITE_DATA( 4, GLenum, SWAP32(type) );
crMemcpy( data_ptr + 8, lists, numBytes );
shortPtr = (GLshort *) (data_ptr + 8);
intPtr = (GLint *) (data_ptr + 8);
if (bytesPerList > 1)
{
for ( i = 0 ; i < n ; i++)
{
switch( bytesPerList )
{
case 2:
*shortPtr = SWAP16(*shortPtr);
shortPtr+=1;
break;
case 4:
*intPtr = SWAP32(*intPtr);
intPtr+=1;
break;
}
}
}
crHugePacket( CR_CALLLISTS_OPCODE, data_ptr );
crPackFree( data_ptr );
}
示例6: crUnpackExtendProgramNamedParameter4fvNV
void crUnpackExtendProgramNamedParameter4fvNV(void)
{
GLenum id = READ_DATA(8, GLuint);
GLsizei len = READ_DATA(12, GLsizei);
GLfloat params[4];
GLubyte *name = crAlloc(len);
params[0] = READ_DATA(16, GLfloat);
params[1] = READ_DATA(20, GLfloat);
params[2] = READ_DATA(24, GLfloat);
params[3] = READ_DATA(28, GLfloat);
crMemcpy(name, DATA_POINTER(32, GLubyte), len);
cr_unpackDispatch.ProgramNamedParameter4fvNV(id, len, name, params);
}
示例7: crUnpackExtendProgramNamedParameter4dNV
void crUnpackExtendProgramNamedParameter4dNV(void)
{
GLuint id = READ_DATA(8, GLuint);
GLsizei len = READ_DATA(12, GLsizei);
GLdouble params[4];
GLubyte *name = crAlloc (len);
params[0] = READ_DOUBLE(16);
params[1] = READ_DOUBLE(24);
params[2] = READ_DOUBLE(32);
params[3] = READ_DOUBLE(40);
crMemcpy(name, DATA_POINTER(48, GLubyte), len);
cr_unpackDispatch.ProgramNamedParameter4dNV(id, len, name, params[0], params[1], params[2], params[3]);
}
示例8: crPackCompressedTexSubImage3DARBSWAP
void PACK_APIENTRY crPackCompressedTexSubImage3DARBSWAP( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imagesize, const GLvoid *data )
{
unsigned char *data_ptr;
int packet_length;
int isnull = (data == NULL);
/* All extended opcodes have their first 8 bytes predefined:
* the first four indicate the packet size, and the next four
* indicate the actual extended opcode.
*/
packet_length =
sizeof( GLenum) + /* extended opcode */
sizeof( target ) +
sizeof( level ) +
sizeof( xoffset ) +
sizeof( yoffset ) +
sizeof( zoffset ) +
sizeof( width ) +
sizeof( height ) +
sizeof( depth ) +
sizeof( format ) +
sizeof( imagesize ) +
sizeof( int ); /* isnull */
if (data)
{
packet_length += imagesize;
}
data_ptr = (unsigned char *) crPackAlloc( packet_length );
WRITE_DATA( 0, GLenum, SWAP32(CR_COMPRESSEDTEXSUBIMAGE3DARB_EXTEND_OPCODE) );
WRITE_DATA( 4, GLenum, SWAP32(target) );
WRITE_DATA( 8, GLint, SWAP32(level) );
WRITE_DATA( 12, GLint, SWAP32(xoffset) );
WRITE_DATA( 16, GLint, SWAP32(yoffset) );
WRITE_DATA( 20, GLint, SWAP32(zoffset) );
WRITE_DATA( 24, GLsizei, SWAP32(width) );
WRITE_DATA( 28, GLsizei, SWAP32(height) );
WRITE_DATA( 32, GLsizei, SWAP32(depth) );
WRITE_DATA( 36, GLenum, SWAP32(format) );
WRITE_DATA( 40, GLsizei, SWAP32(imagesize) );
WRITE_DATA( 44, int, SWAP32(isnull) );
if (data) {
crMemcpy( (void *)(data_ptr + 48), (void *)data, imagesize);
}
crHugePacket( CR_EXTEND_OPCODE, data_ptr );
crPackFree( data_ptr );
}
示例9: crPackDrawBuffers
void PACK_APIENTRY crPackDrawBuffers(GLsizei n, const GLenum *bufs)
{
CR_GET_PACKER_CONTEXT(pc);
unsigned char *data_ptr;
int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(n) + n*sizeof(*bufs);
CR_GET_BUFFERED_POINTER(pc, packet_length);
WRITE_DATA_AI(int, packet_length);
WRITE_DATA_AI(GLenum, CR_DRAWBUFFERS_EXTEND_OPCODE);
WRITE_DATA_AI(GLsizei, n);
crMemcpy(data_ptr, bufs, n*sizeof(*bufs));
WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
CR_UNLOCK_PACKER_CONTEXT(pc);
}
示例10: crStateGetPolygonStipple
void STATE_APIENTRY crStateGetPolygonStipple(PCRStateTracker pState, GLubyte *b )
{
CRContext *g = GetCurrentContext(pState);
CRPolygonState *poly = &(g->polygon);
if (g->current.inBeginEnd)
{
crStateError(pState, __LINE__, __FILE__, GL_INVALID_OPERATION,
"glGetPolygonStipple called in begin/end");
return;
}
crMemcpy((char*)b, (char*)poly->stipple, 128);
}
示例11: crPackAppendBuffer
void crPackAppendBuffer( const CRPackBuffer *src )
{
GET_PACKER_CONTEXT(pc);
const int num_data = crPackNumData(src);
const int num_opcode = crPackNumOpcodes(src);
CRASSERT(num_data >= 0);
CRASSERT(num_opcode >= 0);
/* don't append onto ourself! */
CRASSERT(pc->currentBuffer);
CRASSERT(pc->currentBuffer != src);
if (!crPackCanHoldBuffer(src))
{
if (src->holds_BeginEnd)
{
crWarning( "crPackAppendBuffer: overflowed the destination!" );
return;
}
else
crError( "crPackAppendBuffer: overflowed the destination!" );
}
/* Copy the buffer data/operands which are at the head of the buffer */
crMemcpy( pc->buffer.data_current, src->data_start, num_data );
pc->buffer.data_current += num_data;
/* Copy the buffer opcodes which are at the tail of the buffer */
CRASSERT( pc->buffer.opcode_current - num_opcode >= pc->buffer.opcode_end );
crMemcpy( pc->buffer.opcode_current + 1 - num_opcode, src->opcode_current + 1,
num_opcode );
pc->buffer.opcode_current -= num_opcode;
pc->buffer.holds_BeginEnd |= src->holds_BeginEnd;
pc->buffer.in_BeginEnd = src->in_BeginEnd;
pc->buffer.holds_List |= src->holds_List;
}
示例12: crPackDeleteProgramsARB
void PACK_APIENTRY crPackDeleteProgramsARB(GLsizei n, const GLuint *ids)
{
unsigned char *data_ptr;
int packet_length = sizeof(GLenum) + sizeof(n) + n * sizeof(*ids);
if (!ids)
return;
data_ptr = (unsigned char *) crPackAlloc(packet_length);
WRITE_DATA(0, GLenum, CR_DELETEPROGRAMSARB_EXTEND_OPCODE);
WRITE_DATA(4, GLsizei, n);
crMemcpy(data_ptr + 8, ids, n * sizeof(*ids));
crHugePacket(CR_EXTEND_OPCODE, data_ptr);
crPackFree(data_ptr);
}
示例13: crPackUniform4iv
void PACK_APIENTRY crPackUniform4iv(GLint location, GLsizei count, const GLint *value)
{
CR_GET_PACKER_CONTEXT(pc);
unsigned char *data_ptr;
int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count) + 4*count*sizeof(*value);
CR_GET_BUFFERED_POINTER(pc, packet_length);
WRITE_DATA_AI(int, packet_length);
WRITE_DATA_AI(GLenum, CR_UNIFORM4IV_EXTEND_OPCODE);
WRITE_DATA_AI(GLint, location);
WRITE_DATA_AI(GLsizei, count);
crMemcpy(data_ptr, value, 4*count*sizeof(*value));
WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
CR_UNLOCK_PACKER_CONTEXT(pc);
}
示例14: crUnpackTexGendv
void crUnpackTexGendv( void )
{
GLenum coord = READ_DATA( sizeof( int ) + 0, GLenum );
GLenum pname = READ_DATA( sizeof( int ) + 4, GLenum );
GLdouble params[4];
unsigned int n_param = READ_DATA( 0, int ) - ( sizeof(int) + 8 );
if ( n_param > sizeof(params) )
crError( "crUnpackTexGendv: n_param=%d, expected <= %d\n", n_param,
(unsigned int)sizeof(params) );
crMemcpy( params, DATA_POINTER( sizeof( int ) + 8, GLdouble ), n_param );
cr_unpackDispatch.TexGendv( coord, pname, params );
INCR_VAR_PTR();
}
示例15: crNetworkPointerWrite
void crNetworkPointerWrite( CRNetworkPointer *dst, void *src )
{
/* init CRNetworkPointer with invalid values */
dst->ptrAlign[0] = 0xDeadBeef;
dst->ptrAlign[1] = 0xCafeBabe;
/* copy the pointer's value into the CRNetworkPointer */
crMemcpy( dst, &src, sizeof(src) );
/* if either assertion fails, it probably means that a packer function
* (which returns a value) was called without setting up the writeback
* pointer, or something like that.
*/
CRASSERT(dst->ptrAlign[0] != 0xffffffff);
CRASSERT(dst->ptrAlign[0] != 0xDeadBeef);
}